본문 바로가기
안드로이드

안드로이드 Cleartext HTTP traffic 에러 해결

by 코딩히어로 2022. 3. 2.
728x90

안드로이드 어플에서 HTTP통신을 통해 서버에 접근하는 경우

Cleartext HTTP traffic to Site not permitted 에러가 발생하였습니다.

 

java.io.IOException: Cleartext HTTP traffic to 11.22.222.33 not permitted
2022-03-02 09:49:38.035 3503-3530/com.ftdi.javad2xxdemo W/System.err:     at com.android.okhttp.HttpHandler$CleartextURLFilter.checkURLPermitted(HttpHandler.java:127)
2022-03-02 09:49:38.035 3503-3530/com.ftdi.javad2xxdemo W/System.err:     at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:462)
2022-03-02 09:49:38.035 3503-3530/com.ftdi.javad2xxdemo W/System.err:     at com.android.okhttp.internal.huc.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:131)
2022-03-02 09:49:38.035 3503-3530/com.ftdi.javad2xxdemo W/System.err:     at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getOutputStream(HttpURLConnectionImpl.java:262)
2022-03-02 09:49:38.035 3503-3530/com.ftdi.javad2xxdemo W/System.err:     at com.ftdi.javad2xxdemo.Http.doInBackground(Http.java:37)
2022-03-02 09:49:38.036 3503-3530/com.ftdi.javad2xxdemo W/System.err:     at com.ftdi.javad2xxdemo.Http.doInBackground(Http.java:14)
2022-03-02 09:49:38.036 3503-3530/com.ftdi.javad2xxdemo W/System.err:     at android.os.AsyncTask$3.call(AsyncTask.java:394)
2022-03-02 09:49:38.037 3503-3530/com.ftdi.javad2xxdemo W/System.err:     at java.util.concurrent.FutureTask.run(FutureTask.java:266)
2022-03-02 09:49:38.037 3503-3530/com.ftdi.javad2xxdemo W/System.err:     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:305)
2022-03-02 09:49:38.037 3503-3530/com.ftdi.javad2xxdemo W/System.err:     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
2022-03-02 09:49:38.037 3503-3530/com.ftdi.javad2xxdemo W/System.err:     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
2022-03-02 09:49:38.038 3503-3530/com.ftdi.javad2xxdemo W/System.err:     at java.lang.Thread.run(Thread.java:923)

 

원인은 안드로이드에서 Http접근을 허용하지 않는다는 의미로 Https로 접근하면

문제 될 것이 없지만 해당 서버가 Https를 지원하지 않는다면 Http로 접근을 해야 합니다.

 

이런 문제가 발생하는 원인은 Android 진영에서 안드로이드 Pie(API28) 이상부터는

Cleartext HTTP를 비활성화하는 것으로 정책이 변경이 되었기 때문입니다.

 

즉 API28 이상에서는 Http로 접근을 위해서는 Cleartext HTTP를 활성화해주어야 합니다.

 


Claertext HTTP를 추가해주는 방법은 너무도 간단합니다.

Android Manifest 파일에 Application 탭 내에 다음과 같이 추가합니다.

 

<application
        android:label="@string/app_name"
        android:icon="@drawable/ic_launcher"
        android:usesCleartextTraffic="true">

 

usesCleartextTraffic을 true로 설정하고 application탭에 추가한 뒤 어플을 재실행하게 되면

Http로도 통신이 잘 되는 것을 확인할 수 있습니다.

728x90
반응형

댓글