Cleartext HTTP traffic error

Cleartext HTTP traffic to domain not permitted 문제 해결

In Android, Experience by Flature2 Comments

java.io.IOException: Cleartext HTTP traffic to ‘domain’ not permitted 문제 해결 포스트입니다.

요새 이것저것 기능들에 대해 테스트를 해보고 있습니다.
그러면서 Jsoup 기능을 사용해보면서 Crawling을 하는데, https의 경우 별 문제가 없는데, http 통신을 하는 페이지의 경우 수집이 제대로 되지 않는 문제가 있었습니다.

Cleartext HTTP traffic error

잘 안보이실 수 있지만, Logcat부분을 발췌했습니다.
오류난 부분의 핵심 부분을 적어보자면 이렇습니다.

System.err: java.io.IOException: Cleartext HTTP traffic to ‘domain’ not permitted

버튼 클릭 이벤트를 통해 크롤링을 진행했는데, 버튼을 누르면서 에러가 발생하는 시점에 나타나는 문구입니다.

제 사이트의 경우 https 통신을 하고 있기 때문에 별 문제가 없었는데, 그 외 http(80) 통신을 하는 사이트의 경우 이러한 에러가 발생했습니다.

문제는 금방 찾아볼 수 있었습니다.

문제 원인

안드로이드 9부터는 http에 대해 네트워크 보안정책이 강화되면서 이러한 에러가 발생하는 것 같습니다.
실제로 구글에서는 http 서비스에 대해서는 크롬에서 통신이 안되게 하겠다고 예전에 얘기했었던게 기억이 나네요.

해결 방법

해결은 AndroidManifest.xml 파일을 조정해주면 됩니다.

https://gist.github.com/Flature/dc4c9fa151fb00551a5f0b1411486747

위 파일은 AndroidManifest.xml 파일의 전문입니다.
살짝 수정한 부분은 있지만, 이 오류 해결방법을 소개해드리는데에는 별 문제가 없으니 있는 그대로 참고하셔도 무관합니다.

<application> 태그 부분에 한 줄 추가해주시면 됩니다.

    <application
            android:allowBackup="true"
            android:icon="@mipmap/ic_launcher"
            android:label="@string/app_name"
            android:roundIcon="@mipmap/ic_launcher_round"

            android:usesCleartextTraffic="true"
            //윗줄입니다!
            android:supportsRtl="true"
            android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>

                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
    </application>

‘android:usesCleartextTraffic=”true”‘ 를 추가해주시면 문제는 해결됩니다.
근데, 이걸로 해결이 안된다면 아에 인터넷 통신이 안되는걸 수도 있기 때문에 그 위에 있는 uses-permission 부분도 추가해주셔야 하겠습니다.

대부분 이걸로 해결이 될 것으로 생각됩니다.
만약 이걸로 해결이 되지 않으신다면, 댓글 남겨주시기 바랍니다.
다른 방법을 같이 고민해보겠습니다.

지금까지 java.io.IOException: Cleartext HTTP traffic to ‘domain’ not permitted 문제 해결 포스트였습니다.
다른 Android 관련 글을 보고 싶으시다면 여기를 눌러주세요.

Comments

  1. 감사합니다 덕분에 해결했어요

Leave a Reply