안드로이드 http 통신 관련

SeiLyn·2024년 5월 20일

Android

목록 보기
1/1

집에서 토이프로젝트를 한개 하는데,
개발 테스트 서버는 https가 아닌 http였고,

지금 회사에서 진행중인 프로젝트도 내가 서버개발에 다른 책임님께서 안드로이드 개발을 진행중인데, 안드로이드 9부터는 http를 아예 막아놓았다는 얘기가 어렴풋이 기억이 났었다.

스택오버플로우에도 해당 자료가 많았는데

https://stackoverflow.com/questions/51902629/how-to-allow-all-network-connection-types-http-and-https-in-android-9-pie

해당 방법이 제일 잘 알려져 있어서 그대로 했는데 자꾸 cleartext에러가 났다....

알고보니 Retrofit 설정에서

import okhttp3.ConnectionSpec
import okhttp3.OkHttpClient
import okhttp3.logging.HttpLoggingInterceptor
import retrofit2.Retrofit
import retrofit2.converter.gson.GsonConverterFactory
import java.util.Arrays
import java.util.concurrent.TimeUnit


object WebServiceClient {
    private lateinit var interceptor: HttpLoggingInterceptor
    private lateinit var okHttpClient: OkHttpClient
    private var retrofit: Retrofit? = null


    val client: Retrofit
        get() {
            interceptor = HttpLoggingInterceptor()
            interceptor.level = HttpLoggingInterceptor.Level.BODY
            okHttpClient = OkHttpClient.Builder()
                .addInterceptor(interceptor)
                .connectionSpecs(
                    Arrays.asList(
                    ConnectionSpec.MODERN_TLS,
                    ConnectionSpec.COMPATIBLE_TLS,
                    
                    //// 이줄을 추가해줘야 했었음.
                    ConnectionSpec.CLEARTEXT))
                .followRedirects(true)
                .followSslRedirects(true)
                .retryOnConnectionFailure(true)
                .connectTimeout(20, TimeUnit.SECONDS)
                .readTimeout(20, TimeUnit.SECONDS)
                .writeTimeout(20, TimeUnit.SECONDS)
                .cache(null)
                .build()

            if (retrofit == null) {
                retrofit = Retrofit.Builder()
                    .baseUrl("개발서버URL")
                    .addConverterFactory(GsonConverterFactory.create())
                    .client(okHttpClient)
                    .build()
            }
            return retrofit!!
        }
}

ConnectionSpec.CLEARTEXT 이걸 추가해줘야 했었다.

0개의 댓글