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
반응형
'안드로이드' 카테고리의 다른 글
안드로이드 Stack Clear (9) | 2022.03.03 |
---|---|
안드로이드 View BackgroundColor 변경 (4) | 2022.03.02 |
구글스토어 어플 출시 거부 (로그인 정보 미제공) 해결 (12) | 2022.02.17 |
안드로이드 화면 세로 고정 (2) | 2022.02.15 |
안드로이드 버튼 클릭 비활성화 (8) | 2022.02.09 |
댓글