[AndroidStudio][Kotlin] 안드로이드 스튜디오 로컬 서버 연결 security 설정, localhost가 안되는 이유, UnknownServiceException

2023. 8. 8. 23:13·IDE/Android Studio

배경

스프링으로 API를 만들고, 로컬 서버를 열어서 레트로핏으로 get 요청을 보내보려고 했습니다.

근데 제대로 요청을 보내지 못하고 onFailure()가... 

t.toString() 로 무슨 에러인지 알아보았습니다.

UnknownServiceException: CLEARTEXT communication to 10.0.2.2 not permitted by network security policy





security 설정

챗gpt와 구글링을 통해 저 security 설정 문제임을 알게되었습니다.

UnknownServiceException: CLEARTEXT communication to 10.0.2.2 not permitted by network security policy

위 에러 메세지는 네트워크 보안 정책으로 인해 앱이 네트워크 보안을 준수하지 않아 발생하는 문제라고 하네요

 

로컬서버라 프로토콜이 https 가 아닌 http라 이런 에러가 발생했습니다.

 

그래서 이 에러를 해결하기 위해 두 가지 방법을 시도했습니다.

 

 

 

 

 

안드로이드 네트워크 보안 설정 변경

프로젝트에 res/xml/network_security_config.xml 파일을 생성하고 다음과 같이 설정해주세요.

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <base-config cleartextTrafficPermitted="true" />
</network-security-config>

이렇게하면 앱은 Cleartext 통신을 허용합니다. 다만, 이 방법은 보안 측면에서는 안좋다고 합니다...

 

 하지만!! 저는 이 방법이 통하지 않았어요... 바로 다음 방법을 시도해봤습니다.

 

 

 

 

 

AndroidManifest.xml에서 Cleartext 허용 설정 변경

AndroidManifest.xml 파일에 다음과 같이 설정을 추가했습니다.

<application
    ...
    android:usesCleartextTraffic="true"
    ...
</application>

이 방법을 시도했더니 드디어! get 요청을 성공적으로 보냈습니다...!

하지만 이 역시 보안상 좋지 않으니 되도록이면 https를 사용하시길!

 

 

 

 

localhost, 10.0.2.2

위 방법을 다 시도했는데 안되시는 분들은

base url이 localhost인지 확인하셔야 합니다.

 

ip주소가 localhost 또는 127.0.0.1이신 분들은 아마 다음과 같은 에러 메세지를 마주하셨을겁니다

java.net.ConnectException: Failed to connect to localhost/127.0.0.1:8080

 

보통 로컬 서버는 localhost나 127.0.0.1 주소로 접근합니다.

하지만 안드로이드 스튜디오에서의 localhost는 애뮬레이터의 로컬이기 때문에 

localhost:포트번호가 아닌 http://10.0.2.2:포트번호 로 base url을 설정해야합니다!

 

 

제 글이 한 사람에게라도 도움이 되었으면 좋겠네요

글 읽어주셔서 감사합니다!

'IDE > Android Studio' 카테고리의 다른 글

[Android Studio] 인텐트 알아보기  (0) 2023.08.30
[AndroidStudio][Kotlin] Retrofit, 레트로핏으로 api 사용하기  (0) 2023.08.16
[AndroidStudio][Kotlin] WebView로 웹 페이지 안드로이드 앱으로 빌드하기  (0) 2023.08.15
[AndroidStudio][Kotlin] 웹 뷰 에러 net::ERROR_CACHE_MISS,  (0) 2023.08.13
[AndroidStudio][Kotlin] EditText의 addTextChangedListener, TextWatcher, TextWatcherAdapter  (0) 2023.08.13
'IDE/Android Studio' 카테고리의 다른 글
  • [AndroidStudio][Kotlin] Retrofit, 레트로핏으로 api 사용하기
  • [AndroidStudio][Kotlin] WebView로 웹 페이지 안드로이드 앱으로 빌드하기
  • [AndroidStudio][Kotlin] 웹 뷰 에러 net::ERROR_CACHE_MISS,
  • [AndroidStudio][Kotlin] EditText의 addTextChangedListener, TextWatcher, TextWatcherAdapter
hurlud
hurlud
나와 같은 궁금증을 가진 사람들을 위해 오늘도! 🐥
  • hurlud
    주독야독
    hurlud
  • 전체
    오늘
    어제
  • 최근 글

    • ALL (106)
      • CS (13)
      • Linux (2)
      • Deploy (7)
        • AWS (6)
        • Docker (1)
      • IDE (13)
        • IntelliJ (5)
        • Android Studio (8)
      • DB (10)
        • MySQL (6)
        • MongoDB (4)
      • Programming Language (20)
        • JavaScript (10)
        • Java (8)
        • Python (2)
      • Framework (32)
        • Node.js (6)
        • SpringBoot (17)
        • React (6)
        • NestJS (2)
      • Git | Github (4)
      • ETC (5)
      • Akka (0)
  • 링크

    • 깃허브
  • hELLO· Designed By정상우.v4.10.0
hurlud
[AndroidStudio][Kotlin] 안드로이드 스튜디오 로컬 서버 연결 security 설정, localhost가 안되는 이유, UnknownServiceException
상단으로

티스토리툴바