>source

저는 localhost내부에 php 스크립트를 만들고 그것을 다음과 연결하고 있습니다.http클라이언트하지만 문제가 발생합니다.

에뮬레이터에서 localhost에 있는 PHP 파일에 어떻게 연결할 수 있는지 알려주세요.

  • 답변 # 1

    사용10.0.2.2기본 AVD 및10.0.3.2지니모션용

    어디에 써야 합니까?

    kurniawan262021-11-15 08:13:59

    내 자신의 스마트 폰 장치는 무엇입니까?

    Uzair Qaiser2021-11-15 08:57:11
  • 답변 # 2

    이 블로그 작성자에게 감사드립니다.

    xml에서 네트워크 보안 구성 정의

    <network-security-config>    <domain-config cleartextTrafficPermitted="true">       <domain includeSubdomains="true">10.0.2.2</domain>    </domain-config></network-security-config>

    그리고 설정AndroidManifest.xml

    <application
        android:networkSecurityConfig="@xml/network_security_config"
    </application>

    문제가 해결되었습니다!

    참고: https://developer.android.com/training/articles/security-config

    어머나! 내 목숨을 구했어!! 이 질문에 대한 직접적인 답변은 아니지만 clearText Http가 허용되지 않는 문제에서 내 생명을 구했습니다.

    elliotching2021-11-15 23:21:11
  • 답변 # 3

    이것이 마침내 나를 위해 일한 것입니다.

    • localhost:8080에서 실행 중인 백엔드
    • IP 주소 가져오기(Windows의 경우 ipconfig)
    • IP 주소를 호스트 이름으로 사용하고 백엔드가 실행되는 포트를 포트로 사용하도록 Android 에뮬레이터의 프록시를 구성합니다(제 경우: 192.168.1.86:8080

    • Android 앱이 동일한 URL(192.168.1.86:8080)로 요청을 보내도록 합니다(localhost로 요청 보내기 및 http://10.0.2.2나를 위해 일하지 않았다)

    이것은 나를 위해 작동하는 유일한 솔루션입니다. 요점: 앱은 프록시 설정과 동일한 URL 및 포트로 요청을 보냅니다.

    hyyou20102021-11-15 18:33:11

    이것은 나에게도 효과가 있지만 프록시가 필요하지 않다고 생각합니다. 내 Flask 서버의 로그는 프록시가 구성될 때 AVD가 404를 초래하는 이상하고 불필요한 GET 및 CONNECT를 많이 생성했음을 보여주었습니다. Android Studio HTTP 프록시 설정 사용으로 다시 전환하면 문제가 해결되었으며 이제 서버는 내가 명시적으로 원하는 유효한 요청만 받습니다. 편의를 위해 할 수 있는 또 다른 일은 DHCP가 변경할 수 없도록 라우터 설정을 통해 컴퓨터에 고정 IP 주소를 할당하는 것입니다.

    Theta2021-11-15 21:11:35
  • 답변 # 4

    @lampShaded님, 답변 감사합니다.

    API/URL에서 직접 사용http://10.0.2.2:[귀하의 포트]/에뮬레이터 설정에서 프록시 주소를 포트 번호와 함께 10.0.2.2로 추가합니다. 자세한 내용은 다음을 방문하십시오. https://developer.android.com/studio/run/emulator-networking.html

    나를 위해 일하지 않습니다. etc/hosts에 내 사이트에 대한 사용자 정의 이름을 추가했습니다. 이제 Android 시뮬레이터에서 mywebapp.local URL에 액세스하고 싶습니다. 어떻게 할 수 있습니까?

    Jigar2021-11-15 18:33:11
  • 답변 # 5

    다음 명령으로 adb 포트를 변경해야 합니다.

    adb reverse tcp:8880 tcp:8880; adb reverse tcp:8081 tcp:8081; adb reverse tcp:8881 tcp:8881
    

  • 답변 # 6

    사용10.0.2.2실제 컴퓨터에 액세스합니다.

    배운 것처럼 에뮬레이터를 사용하면로컬 호스트(127.0.0.1)는 예상한 대로 컴퓨터의 루프백 서비스가 아니라 장치 자체의 루프백 서비스를 나타냅니다.

    10.0.2.2를 사용하여 실제 머신에 액세스할 수 있습니다. 이는 개발을 돕기 위해 설정된 별칭입니다.

    예를 들어 유용하지는 않지만 좋습니다. oauth 클라이언트 ID가 localhost에만 유효한 경우

    Dominic2021-11-15 03:54:47

    10.0.2.2 https localhost의 경우 작동하지 않습니다. https의 경우 다른 ip를 사용해야 합니까?

    Manu2021-11-15 11:06:47

    하지만 먼저 API를 "localhost:port"에서 "127.0.0.1:port"로 변경해야 합니다. 그런 다음 10.0.2.2를 사용하여 실제 컴퓨터에 액세스합니다.

    binhtruong.it2021-11-15 11:21:11
  • 답변 # 7

    localhost를 제공하는 대신 IP를 제공하십시오.

    무슨 IP? 로컬 서버에서 작업할 때 공용 IP가 없습니다. 루프백 IP 127.0.0.1을 의미합니까?

    Sazzad Hissain Khan2021-11-15 18:04:23
  • 이전 angular : 문자열 배열 또는 객체 배열을 취하고 반환할 수 있는 함수를 입력하는 방법은 무엇입니까?
  • 다음 java : 이메일 주소 중복을 피하기 위한 유효성 검사를 받고 싶습니다.