Android 에뮬레이터에서 localhost : port에 액세스
에서 실행되는 로컬 컴퓨터에서 웹 서비스를 실행하고
localhost:54722
있습니다.Android 에뮬레이터에서 실행되는 앱에서 서비스를 호출하고 싶습니다.
10.0.2.2
응용 프로그램에서 사용 하면 localhost에 액세스 한다는 것을 읽었 지만 포트 번호로는 작동하지 않는 것 같습니다. 라고 말합니다
HttpResponseException: Bad Request
.
IP 주소 "
10.0.2.2
"를 사용하여 호스트 시스템에 액세스 할 수 있습니다 .이것은 안드로이드 팀에 의해 이런 식으로 설계되었습니다. 따라서 웹 서버는 localhost에서 완벽하게 실행할 수 있으며 Android 앱에서 "
http://10.0.2.2:<hostport>
" 를 통해 액세스 할 수 있습니다 .에뮬레이터가 프록시 서버를 통해 인터넷에 액세스해야하는 경우 에뮬레이터의 확장 제어 화면에서 사용자 정의 HTTP 프록시를 구성 할 수 있습니다. 에뮬레이터가 열린 상태에서
를 클릭 한 다음
설정
및
프록시
를 클릭 합니다 . 여기에서 고유 한 HTTP 프록시 설정을 정의 할 수 있습니다.
기본 AVD에 10.0.2.2를 사용하고 Genymotion에 10.0.3.2를 사용하십시오.
IIS Express를 사용하는 경우`localhost '대신 모든 호스트 이름에 바인딩해야합니다. 이 정답을 확인하십시오.
https://stackoverflow.com/a/15809698/383761
모든 IP 주소 및 호스트 이름에 바인딩하도록 IIS Express 자체에 지시하십시오. .config 파일 (일반적으로 % userprofile % \ My Documents \ IISExpress \ config \ applicationhost.config 또는 Visual Studio 2015의 경우 $ (solutionDir) .vs \ config \ applicationhost.config)에서 사이트의 바인딩 요소를 찾아 추가하십시오.<binding protocol="http" bindingInformation="*:8080:*" />
기존 사이트를 수정하는 대신 두 번째 바인딩으로 추가해야합니다. 그렇지 않으면 VS가 추가 된 새 사이트 만 다시 추가합니다.
(1)
또한 관리자로 VS를 실행해야 할 수도 있습니다.
IIS Express에서 웹 응용 프로그램을 실행하는 Visual Studio에서 동일한 문제에 직면했습니다. 수정하려면 프로젝트 속성으로 이동 한 다음 디버그 탭을 클릭하고
PORT]를
PORT]로 변경하고 안드로이드 URL을
로 설정해야합니다 . /10.0.2.2:[YOUR PORT]. 그것은 나를 위해 일했다.
Visual Studio Professional 2015에서 "Conveyor by Keyoti"를 설치하여 문제를 해결했습니다. 컨베이어는 외부 요청을 가능하게하는 포트 (45455)로 REMOTE 주소 (IP)를 생성합니다. 예:
컨베이어 (없이 안드로이드 에뮬레이터 네트워크에 또는에서 외부 태블릿 및 휴대 전화에서에서 당신 테스트 웹 응용 프로그램을 할 수 있습니다
http://10.0.2.2:<hostport>
)단계는 다음 링크에 있습니다.
https://marketplace.visualstudio.com/items?itemName=vs-publisher-1448185.ConveyorbyKeyoti
로컬 호스트에서 웹 서버가 실행 중입니다. 에뮬레이터를 열고 로컬 호스트에 연결하려면을 사용하고
192.168.x.x
있습니다. 즉, 로컬 LAN IP 주소를 사용해야합니다. 그건 그렇고, 당신
HttpResponseException (Bad Request)
이 호스트에 접근 할 수 없다는 것을 의미하지는 않습니다.다른 오류로 인해이 예외가 발생합니다.
문제는 안드로이드 에뮬레이터 매핑이다
10.0.2.2
에
127.0.0.1
,
하지
에
localhost
. 따라서 웹 서버를 서버가
127.0.0.1:54722
아닌 서버로 구성하십시오
localhost:54722
. 그렇게해야합니다.
당신은 URL을 설정해야합니다
10.0.2.2:portNr
portNr =
현재 서비스가 실행되고있는 ASP.NET Development Server의 지정된 포트
localhost:3229/Service.svc
그래서 내 URL은
10.0.2.2:3229
이 방법으로 내 문제를 해결했습니다.도움이되기를 바랍니다 ...
"BadRequest"는 일반적으로 서버 자체에서 전송 된 오류입니다. rfc 2616 참조
10.4.1 400 잘못된 요청잘못된 구문으로 인해 서버에서 요청을 이해할 수 없습니다. 클라이언트는 수정없이 요청을 반복해서는 안됩니다.
따라서 서버에 연결되어 있지만 요청이 Expecet 양식에 맞지 않습니다. 연결을 만드는 방법, 포함 된 헤더 (있는 경우)를 모르지만 확인해야합니다.더 많은 도움이 필요하면 코드의 내용과 서버에 연결하는 데 사용되는 내용을 설명하여 큰 그림을 얻으십시오.
은 동일한 문제가있는 질문입니다. 대답은 헤더에 내용 유형이 설정되지 않았다는 것입니다.
로컬 호스트를 실행 한 후
http://localhost:[port number]/
포트 번호를 찾았습니다.그런 다음 Command에서 IP 주소를 얻고 windows 명령을 열고 입력하십시오.
필자의 경우 IP는
192.168.10.33
내 URL이
번호] /입니다. Android에서 스튜디오는이 URL을 URL로 사용합니다. 그런 다음 에뮬레이터의 수동 프록시에서 URL과 포트 번호를 설정하십시오.
10.0.2.2
Android의 보안 도메인이 아니기 때문에 기본적으로 비 TLS 연결이 금지 된 API 28+의 네트워크 구성에서 보안되지 않은 도메인을 허용해야합니다.다음 구성을 사용할 수 있습니다.다음과 같이 main / res / xml / network_security_config.xml에 새 파일을 작성하십시오.
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">localhost</domain>
<domain includeSubdomains="true">10.0.2.2</domain>
</domain-config>
</network-security-config>
그리고 AndroidManifest.xml에서 지적하십시오.
<application
......
......
android:networkSecurityConfig="@xml/network_security_config">
Android 에뮬레이터에서 IISExpress 웹 API에 액세스하는 방법을 보여 드리고자합니다. Visual Studio 2015를 사용하고 있습니다. Android Studio에서 Android Emulator를 호출합니다.내가해야 할 일은
applicationhost.config
파일 의 바인딩 구성에 다음 줄을 추가하는 것입니다.
<binding protocol="http" bindingInformation="*:<your-port>:" />
그런 다음 IP4 주소를 확인하고 사용하여 Android 에뮬레이터에서 API에 액세스합니다.
요구 사항 :
Visual Studio를 관리자 권한으로 실행해야합니다.
은 이 를 수행하는 완벽한 방법을 제공합니다.자세한 내용 은 github에 대한
을 방문하십시오도움이 되었기를 바랍니다.
Laravel Homestead 사용자 : Laravel을 Homestead와 함께 사용하는 사람이라면 에뮬레이터에서 192.168.10.10을 사용하여 앱 백엔드에 액세스 할 수 있습니다그래도 작동이 안되는? 또 다른 좋은 해결책은 ngrok https://ngrok.com/ 을 사용하는 것입니다
localhost는 시작할 때 내 에뮬레이터에서 제대로 작동하는 것처럼 보였고 연결 거부 예외가 발생하기 시작했습니다. 에뮬레이터 브라우저에서 127.0.2.2를 사용했으며 에뮬레이터의 내 Android 앱에서이를 사용하면 다시 연결 거부 문제를 표시하기 시작했습니다. .그런 다음 ifconfig를하고 ip 192.168.2.2를 사용했으며 완벽하게 작동했습니다.
잘못된 요청은 일반적으로 전송하는 데이터의 형식이 잘못되었음을 의미합니다. 데이터 매핑이 일치하지 않을 수 있습니다. 요청이 잘못되면 서버에 연결할 수 있지만 요청이 제대로 전송되지 않는 것입니다.
아무도 여전히 이것을 찾고 있다면 이것이 나를 위해 일한 방법입니다.연결된 장치 / 에뮬레이터와 관련하여 컴퓨터의 IP를 찾아야합니다. 에뮬레이터의 경우 다음 단계를 수행하십시오.
- VM 가상 상자로 이동-> 목록에서 연결된 장치를 선택하십시오.
- 설정-> 네트워크-> 장치가 연결된 네트워크 찾기를 선택하십시오. 저에게는 'VirtualBox 호스트 전용 이더넷 어댑터 # 2'였습니다.
- virtualbox에서 파일-> 환경 설정-> 네트워크-> 호스트 전용 네트워크로 이동하여 위 단계에서 지정된 네트워크의 IPv4를 찾으십시오. (호버링하면 정보를 얻을 수 있습니다)
에뮬레이터에서 로컬 호스트에 액세스하려면이 IP를 제공하십시오. 포트는 서비스를 실행 / 게시하는 동안 제공 한 것과 동일합니다.
참고 # 1 :
방화벽 및 인바운드 규칙을 관리했는지 확인하십시오.
참고 # 2 :
컴퓨터를 다시 시작한 후이 IP를 확인하십시오. "다음 IP 사용"을 제공 한 경우에도 호스트 전용 IP가 변경되었습니다.
서비스 계층에서 Visual Studio IIS Express를 사용할 때 발생하는 정확한 문제를 해결했습니다. 10.0.2.2를 가리키면 포트가 작동하지 않습니다. 다른 게시물에서 언급했듯이 IIS Express를 엉망으로 만드는 대신 IIS Express 앞에 프록시를 배치했습니다. 예를 들어, 아파치 또는 nginx. nginx.conf는 다음과 같습니다
# Mobile API
server {
listen 8090;
server_name default_server;
location / {
proxy_pass http://localhost:54722;
}
}
그런 다음 안드로이드는 내 IP 주소를 192.168.xx : 8090으로 가리켜 야합니다.
node express 또는 angular-cli와 같은 타사 패키지를 사용하는 경우 컴퓨터의 IP를 찾아서 localhost 대신 서버 시작 구성 내에서 해당 IP에 호스트를 연결해야합니다. 그런 다음 IP를 사용하여 에뮬레이터에서 시작하십시오. 예를 들어,
ng serve -H 10.149.212.104
angular-cli를 사용 하려면 다음 을 사용해야했습니다. 그런 다음 에뮬레이터에서 사용했습니다.
http://10.149.212.104:4200
1) cmd에서 ipconfig 명령을 실행하십시오.2) 당신은 이와 같은 결과를 얻을 것입니다
3) 그런 다음 VMWare 네트워크 어댑터 1의 IPv4 주소와 포트 번호를 차례로 사용하십시오. 내 경우 8080이므로 localhost를 사용하는 대신 8080192.168.56.1:8080을 사용하고 있습니다
끝난.....
Windows 10을 개발 플랫폼으로 사용하고 있으며 에뮬레이터의 10.0.2.2:port에 액세스하는 것이 예상대로 작동하지 않으며이 질문의 다른 솔루션에 대해서도 동일한 결과가 발생합니다.몇 시간 동안 파고
든
후 에뮬레이터 시작 명령 에 -writable-system 인수를 추가하면 문제 가 해결됩니다.아래와 같이 명령 행을 통해 에뮬레이터를 시작해야합니다.
emulator.exe -avd <emulator_name> -writable-system
그런 다음 에뮬레이터에서 LAN IP 주소 및 바인딩 포트를 사용하여 호스트 시스템에서 실행되는 API 서비스에 액세스 할 수 있습니다.
http://192.168.1.2:<port>
이것이 도움이되기를 바랍니다.: 약 명령 줄에서 에뮬레이터 시작
https://developer.android.com/studio/run/emulator-commandline을
.참고 URL :
https://stackoverflow.com/questions/6760585/accessing-localhostport-from-android-emulator
'programing' 카테고리의 다른 글
텍스트 입력 필드 내에서 커서 위치 (문자 단위) 가져 오기 (0) | 2020.05.10 |
---|---|
Flask for Python을 사용하여 방문자의 IP 주소 가져 오기 (0) | 2020.05.10 |
PostgreSQL 쿼리에서 변수를 선언하는 방법 (0) | 2020.05.10 |
R의 작업 공간에서 하나를 제외한 모든 객체를 제거하려면 어떻게합니까? (0) | 2020.05.10 |
git add, commit 및 push 명령을 하나로? (0) | 2020.05.10 |