본문 바로가기

버그잡기

[Android] 안드로이드 스튜디오 localhost 연결 에러

728x90
반응형

발생한 문제

PC에서 아파치 웹 서버를 실행 시킨 후, localhost로 php를 잘 가져오는걸 확인한 다음에 

안드로이드 스튜디오에서 php를 통해 MySQL의 값을 가져오려는데 ...

 

크롬에서 php를 통해서 json 형식으로 데이터를 잘 가져오는 걸 확인한 모습!

 

애뮬레이터를 실행시켰는데 화면에 데이터가 아예 안 떠서 어디가 문제인가.. 하고 logcat을 살펴보니 아래와 같은 에러가 발생한 걸 확인할 수 있었습니다.

 

 

찾아보니 127.0.0.1 을 사용하지 않고 10.0.2.2 를 사용해야 localhost와 연결이 되는걸 확인했습니다.

 

task.execute("http://10.0.2.2:80/getuser.php");

 

 

 

 

문제의 이유

 

127.0.0.1 을 사용할 수 없었던 이유는 아래의 사이트에서 확인할 수 있었습니다.developer.android.com/studio/run/emulator-networking?hl=ko

 

Android Emulator 네트워킹 설정  |  Android 개발자  |  Android Developers

에뮬레이터는 앱에 복잡한 모델링 및 테스트 환경을 설정하는 데 사용할 수 있는 다목적 네트워킹 기능을 제공합니다.

developer.android.com

 

확인해보니 애뮬레이터의 인스턴스는 개발 머신(나의 컴퓨터)과 격리되어, 가상 라우터와 방화벽 서비스 뒤에서 실행된다고 하네요.

따라서 개발 머신의 127.0.0.1은 애뮬레이터 네트워크 상에서 10.0.2.2로 사용해야 합니다.

즉, 개발 머신의 루프백 인터페이스(개발 머신의 127.0.0.1)에서 애뮬레이터의 서비스에 액세스 하기 위해서는 특수한 주소를 사용해야 합니다.

 

애뮬레이터에서 사용하는 네트워크 주소

 

728x90
반응형