집에서 토이프로젝트를 한개 하는데,
개발 테스트 서버는 https가 아닌 http였고,
지금 회사에서 진행중인 프로젝트도 내가 서버개발에 다른 책임님께서 안드로이드 개발을 진행중인데, 안드로이드 9부터는 http를 아예 막아놓았다는 얘기가 어렴풋이 기억이 났었다.
스택오버플로우에도 해당 자료가 많았는데
해당 방법이 제일 잘 알려져 있어서 그대로 했는데 자꾸 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 이걸 추가해줘야 했었다.