-
[Android] java.net.UnknownServiceException: CLEARTEXT communication to apis.data.go.kr not permitted by network security policy 오류 해결안드로이드 2024. 5. 1. 20:08
✏️ TIL(Today I Learned)
HTTP(평문 통신)을 사용하여 네트워크 요청을 하려고 시도했으나, 앱의 네트워크 보안 정책에 의해 허용되지 않아서 발생한 오류라고 한다. 최신 안드로이드 버전은 기본적으로 보안상의 이유로 평문 트래픽을 허용하지 않기 때문인 것 같다.
이를 해결하는 방법을 2가지 찾아봤다.
1. AndroidManifest.xml 파일의 <application> 부분에 android:usesCleartextTraffic="true"로 설정
<application android:usesCleartextTraffic="true"
cleartext HTTP와 같은 cleartext 네트워크 트래픽을 사용할지 여부를 나타내는 flag로 이 플래그가 flase 로 되어 있으면, 플랫폼 구성 요소 (예 : HTTP 및 FTP 스택, DownloadManager, MediaPlayer)는 일반 텍스트 트래픽 사용에 대한 앱의 요청을 거부하게 된다. 이 flag를 설정하게 되면 모든 cleartext 트래픽은 허용처리가 된다고 한다.
2. networkSecurityConfig 파일을 생성하고, AndroidManifest 에 등록
앱의 네트워크 보안 구성을 수정하여 원하는 도메인에 대해 평문 트래픽을 특별히 허용할 수 있다. 앱에 네트워크 보안 구성 파일을 추가하여 이를 수행할 수 있다.
res/xml 디렉토리에 networkSecurityConfig xml 파일을 생성한다.
// network_security_config.xml <?xml version="1.0" encoding="utf-8"?> <network-security-config> <domain-config cleartextTrafficPermitted="true"> <domain includeSubdomains="true">apis.data.go.kr</domain> </domain-config> </network-security-config>
<application> 태그에 android:networkSecurityConfig 속성을 추가하면된다.
<application android:networkSecurityConfig="@xml/network_security_config"
'안드로이드' 카테고리의 다른 글
[Android] 특정 Tab에서만 Toolbar 보이게 하기 (0) 2024.05.21 [Android] Tab Layout 구현 (Tab 선택 시, icon & text 색상 변경) (0) 2024.05.16 [Android] BuildConfig import 안되는 상황 해결 (Unresolved reference: BuildConfig) (0) 2024.05.01 [Android] 미세먼지 앱 (공공 데이터 API) + Retrofit (0) 2024.05.01 [Android] Retrofit 알아보기 (REST API/ JSON/ GSON) (1) 2024.05.01