Rob*_*bin 200 port android localhost android-emulator
我正在运行的本地计算机上运行Web服务localhost:54722.
我想从Android模拟器中运行的应用程序调用该服务.
我读到10.0.2.2在应用程序中使用将访问localhost,但它似乎也不适用于端口号.它说HttpResponseException: Bad Request.
Akh*_*ain 371
您可以使用IP地址" 10.0.2.2" 访问主机.
这是由Android团队以这种方式设计的.因此,您的网络服务器可以在localhost上完美运行,您可以通过" http://10.0.2.2:<hostport>" 从Android应用程序访问它.
Vin*_*shi 51
使用10.0.2.2作为默认AVD,使用10.0.3.2作为Genymotion
İsm*_*vuz 25
由于10.0.2.2不是 Android 的安全域,因此您必须在 API 28+ 的网络配置中允许非安全域,默认情况下会阻止非 TLS 连接。
您可以使用我的以下配置:
在 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>
Run Code Online (Sandbox Code Playgroud)
并将其指向 AndroidManifest.xml
<application
......
......
android:networkSecurityConfig="@xml/network_security_config">
Run Code Online (Sandbox Code Playgroud)
Hug*_*ner 14
如果您使用的是IIS Express,则可能需要绑定到所有主机名而不仅仅是"localhost".检查这个好答案:
告诉IIS Express本身绑定到所有IP地址和主机名.在.config文件中(通常为%userprofile%\ My Documents\IISExpress\config\applicationhost.config或$(solutionDir).vs\config\applicationhost.config for Visual Studio 2015),找到您网站的绑定元素,然后添加
Run Code Online (Sandbox Code Playgroud)<binding protocol="http" bindingInformation="*:8080:*" />
确保将其添加为第二个绑定而不是修改现有绑定,否则VS将重新添加一个附加了a的新站点.(1) 另外,您可能需要以管理员身份运行VS.
Ehs*_*adi 12
我在Visual Studio上执行IIS Express上的Web应用程序时面临同样的问题.要修复它你需要转到你的项目属性,然后单击Debug选项卡并将http:// localhost:[你的 PORT]更改为http://127.0.0.1:[YOURPORT ]并将android url设置为http:/ /10.0.2.2: [你的港口].它对我有用.
小智 10
我在Visual Studio Professional 2015中安装了"Conveyor by Keyoti"解决了这个问题.传送带生成一个REMOTE地址(您的IP),其端口(45455)启用了外部请求.例:
Conveyor允许您从网络上的外部平板电脑和手机或Android模拟器测试Web应用程序(无http://10.0.2.2:<hostport>)
步骤如下:
https://marketplace.visualstudio.com/items?itemName=vs-publisher-1448185.ConveyorbyKeyoti
Md *_*ury 10
运行本地主机后,您到了http://localhost:[port number]/这里,找到了您的端口号。
然后从命令中获取您的 IP 地址,打开您的 windows 命令并键入 ipconfig

就我而言,IP 是192.168.10.33这样我的 URL 将是http://192.168.10.33:[端口号]/。在 Android 中,工作室使用此 URL 作为您的 URL。然后在模拟器的手动代理中设置您的 URL 和端口号。
我有一个在我的localhost上运行的网络服务器.
如果我打开模拟器并想连接到我正在使用的本地主机192.168.x.x.这意味着您应该使用本地lan IP地址.顺便说一句,您HttpResponseException (Bad Request)并不意味着无法访问主机.
其他一些错误会导致此异常.
问题是,Android模拟器映射10.0.2.2到127.0.0.1,不能到localhost.因此,请将您的Web服务器配置为serveron 127.0.0.1:54722而不是localhost:54722.应该这样做.
我不确定这个解决方案是否适用于每个 Android Emulator 和每个 Android SDK 版本,但运行以下对我来说是有用的。
adb reverse tcp:54722 tcp:54722
Run Code Online (Sandbox Code Playgroud)
您需要让模拟器运行起来,然后才能成功localhost:54722进入正在运行的模拟器设备。
在 Android Emulator 上访问 localhost
从 AndroidManifest.xml 添加互联网权限
<uses-permission android:name="android.permission.INTERNET" />
添加android:usesCleartextTraffic="true",更多细节在这里:
运行下面提到的命令来查找您的系统 IP 地址:
ifconfig | grep "inet " | grep -v 127.0.0.1
Run Code Online (Sandbox Code Playgroud)
复制从这一步(A)中获得的IP地址
运行您的后端应用程序,您可以在您的系统中localhost或127.0.0.1从您的系统访问该应用程序。
现在在android studio中,如果您在代码中使用,则可以替换URL 或者您可以使用从步骤(A)中获得的IP地址并尝试在网络浏览器中打开,像这样http://192.168.0.102:8080/
不要忘记在 IP 地址后添加 PORT,在我的情况下,应用程序在 8080 端口上运行,所以我添加了在 (A) 中使用端口 8080 获得的 IP
| 归档时间: |
|
| 查看次数: |
157629 次 |
| 最近记录: |