티스토리 뷰

상황 : retrofit으로 내부 개발 서버로 API를 호출한 상황에서 발생

 

오늘 안드로이드 retrofit을 사용하여 내부 개발 서버의 API를 호출하였는데 아래와 같은 에러가 발생하였습니다.

java.net.UnknownServiceException: CLEARTEXT communication to {domain} not permitted by network security policy
    at okhttp3.internal.connection.RealConnection.connect(RealConnection.java:164)
    at okhttp3.internal.connection.ExchangeFinder.findConnection(ExchangeFinder.java:224)
    at okhttp3.internal.connection.ExchangeFinder.findHealthyConnection(ExchangeFinder.java:108)
    at okhttp3.internal.connection.ExchangeFinder.find(ExchangeFinder.java:88)
    at okhttp3.internal.connection.Transmitter.newExchange(Transmitter.java:169)
    at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.java:41)
    at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:142)
    at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:117)
    at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.java:94)
    at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:142)
    at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:117)
    at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.java:93)
    at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:142)
    at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.java:88)
    at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:142)
    at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:117)
    at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:229)
    at okhttp3.RealCall$AsyncCall.execute(RealCall.java:172)
    at okhttp3.internal.NamedRunnable.run(NamedRunnable.java:32)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
    at java.lang.Thread.run(Thread.java:923)

위 에러는 안드로이드 버전이 오르며 강화된 보안정책으로 인하여 SSL을 사용하지 않은 http 프로토콜로 된 도메인에 요청을 하는 경우 발생하는 오류로 다음과 같이 해결 가능합니다. (내부 개발에서는 http를 쓰더라도 실제 운영 상황에서는 가급적이면 https를 사용하는 게 좋습니다.)

 

<해결방법>

AndroidManifest.xml 파일의 <application> 태그에 다음과 같은 옵션 추가

android:usesCleartextTraffic="true"

AndroidManifest.xml 내용 중
<AndroidManifest.xml 내용 중>

한 줄만 추가 하면 끝~!!

카카오톡 이모티콘
반응형
댓글
최근에 올라온 글
최근에 달린 댓글