Android:从模拟器访问 localhost 时出现“Bad Request-Invalid Hostname”
Posted
技术标签:
【中文标题】Android:从模拟器访问 localhost 时出现“Bad Request-Invalid Hostname”【英文标题】:Android: "Bad Request-Invalid Hostname" When accessing localhost from emulators 【发布时间】:2018-08-22 13:15:18 【问题描述】:我无法将 localhost 与 xamarin.android 应用程序一起使用。 我已经在 Chrome 浏览器上执行了 Web 项目和服务项目(不是移动应用程序)。
我尝试通过分别附加 10.0.2.2: 和 10.0.3.2: 在 Android Studio 模拟器和 Genymotion 模拟器中浏览显示的端口号,我得到了结果 Bad Request-Invalid Hostname。即使我尝试过服务项目端口号,都无法正常工作。
Web 项目:使用 Visual Studio 2017 的 ASP.NET 项目并在同一解决方案中拥有服务项目。
【问题讨论】:
你做了什么?你删除了我试图帮助你几个小时的其他帖子,然后再次发布了你措辞不好的帖子。当你也扔掉我的工作时,你不应该那样做。然后我们还没有准备好。真可怕。 前面的 cmets 自动转到聊天部分。 那么抱歉指责你。对不起。尝试撤消它,因为这也没有什么好玩的。 您的绑定在 IIS 中是什么样的? 看起来答案就在这里:***.com/a/15809698/7149454 【参考方案1】:打开您的解决方案文件夹。您可能在 1 个文件夹中有多个项目,您不需要项目的文件夹,但需要根文件夹。在里面你会有.vs/config/applicationhost.config
文件,打开它。
在里面找到<sites>
,如果您在一个解决方案中切换启动项目,您将拥有正在运行的站点,可能有多个站点。当您右键单击它的图标时,该名称将与 IIS 在任务栏中显示的名称相对应。例如,标签可以是<site name="ServerApp" id="2">
。
现在你需要添加一行来绑定外部连接到你的机器ip,例如
<site name="ServerApp" id="2">
...
<bindings>
...
<binding protocol="http" bindingInformation="*:60424:127.0.0.1" />
</bindings>
</site>
设置适当的端口号和协议,这里重要的是将它们映射到127.0.0.1
,而不是“localhost”,然后它们将通过10.0.2.2:60424
用于android 模拟器(端口号60424 只是来自上面的示例,使用你的)
【讨论】:
我花了 5 个小时才得到这个答案。谢谢! 你,我的朋友,是救命稻草。我同意@mr5。 进一步的建议是添加另一个binding
而不是替换现有的【参考方案2】:
我已经通过第三方软件解决了这个问题ngrock
查看Android emulator not connecting to localhost api
【讨论】:
【参考方案3】:您可以使用我们的免费扩展 Conveyor https://marketplace.visualstudio.com/items?itemName=vs-publisher-1448185.ConveyorbyKeyoti
如果 Conveyor 给你的 IP 不起作用,只需将其替换为 10.0.2.2。使用 Conveyor 解决了需要让 IIS Express 绑定到其他主机名的问题。它还具有其他一些功能。
【讨论】:
非常感谢。您可以节省五月天以上是关于Android:从模拟器访问 localhost 时出现“Bad Request-Invalid Hostname”的主要内容,如果未能解决你的问题,请参考以下文章
Android真机调试访问本地服务器(localhost)的解决方案
从 Android 模拟器连接到 LocalHost/10.0.2.2 超时
从 Android Emulator 向 localhost 发送文件 - 来自 localhost / PHP 文件问题的 301 错误响应