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 模拟器中测试 localhost

从 Android Emulator 向 localhost 发送文件 - 来自 localhost / PHP 文件问题的 301 错误响应

安卓模拟器访问tomcat

Android模拟器未连接到localhost api