我在本地机器上运行一个web服务,该服务运行在localhost:54722上。

我想从Android模拟器中运行的应用程序调用该服务。

我读到在应用程序中使用10.0.2.2将访问localhost,但它似乎不能与端口号一起工作。它说HttpResponseException: Bad Request。


当前回答

当我试图从Android模拟器连接到我的IIS . net Webservice时,我也遇到了同样的问题。

安装NPM Install -g iisexpress-proxy iisexpress-proxy 53990到9000到代理IIS快速端口到9000,并从模拟器如“http://10.0.2.2:9000”访问端口9000

原因似乎是默认情况下,IIS Express不允许从网络连接 https://forums.asp.net/t/2125232.aspx?Bad+Request+Invalid+Hostname+when+accessing+localhost+Web+API+or+Web+App+from+across+LAN

其他回答

"BadRequest"是一个通常由服务器本身发送的错误,参见rfc 2616

10.4.1 400个错误请求 由于语法错误,服务器无法理解请求。客户不应该在没有修改的情况下重复请求。

因此,您获得了到服务器的工作连接,但是您的请求不符合预期的形式。我不知道你如何创建连接,包括什么头(如果有的话)-但这是你应该检查。

如果您需要更多的帮助,请解释一下您的代码是关于什么的,以及它用来连接到服务器的是什么,这样我们就有了总体的了解。

这里有一个同样的问题-答案是内容类型没有设置在头部。

Localhost在启动时似乎在我的模拟器中工作得很好,然后我开始得到连接拒绝异常 我使用了127.0.2.2从模拟器浏览器,它工作,当我在模拟器中使用我的android应用程序时,它再次开始显示连接拒绝问题。

然后我做了ifconfig,我使用IP 192.168.2.2,它工作得很好

运行您的本地主机后,您会得到http://localhost:[端口号]/在这里您可以找到您的端口号。

然后从命令中获取你的IP地址,打开你的windows命令,输入ipconfig

在我的例子中,IP是192.168.10.33,所以我的URL将是http://192.168.10.33:[端口号]/。 在Android中,工作室使用这个URL作为你的URL。然后在模拟器的手动代理中设置URL和端口号。

坏请求通常意味着您发送的数据格式不正确。可能是数据映射不匹配。如果您正在收到坏请求,则意味着您能够连接到服务器,但请求没有正确发送。

对于Laravel宅基地用户: 如果任何人使用Laravel与homestead,您可以在模拟器中使用192.168.10.10访问应用程序后端

还是不行? 另一个好的解决方案是使用ngrok https://ngrok.com/