我在本地机器上运行一个web服务,该服务运行在localhost:54722上。
我想从Android模拟器中运行的应用程序调用该服务。
我读到在应用程序中使用10.0.2.2将访问localhost,但它似乎不能与端口号一起工作。它说HttpResponseException: Bad Request。
我在本地机器上运行一个web服务,该服务运行在localhost:54722上。
我想从Android模拟器中运行的应用程序调用该服务。
我读到在应用程序中使用10.0.2.2将访问localhost,但它似乎不能与端口号一起工作。它说HttpResponseException: Bad Request。
当前回答
你需要设置URL为10.0.2.2:portNr
portNr = ASP给出的端口。我当前的服务在localhost上运行:3229/ service .svc
我的url是10.0.2.2:3229
我用这种方法解决了我的问题
我希望它能有所帮助……
其他回答
由于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>
把它指向androidmanifest。xml
<application
......
......
android:networkSecurityConfig="@xml/network_security_config">
坏请求通常意味着您发送的数据格式不正确。可能是数据映射不匹配。如果您正在收到坏请求,则意味着您能够连接到服务器,但请求没有正确发送。
Localhost在启动时似乎在我的模拟器中工作得很好,然后我开始得到连接拒绝异常 我使用了127.0.2.2从模拟器浏览器,它工作,当我在模拟器中使用我的android应用程序时,它再次开始显示连接拒绝问题。
然后我做了ifconfig,我使用IP 192.168.2.2,它工作得很好
1)在cmd下执行ipconfig命令
2)你会得到这样的结果
3)使用VMWare网卡1的IPv4地址加上端口号
在我的例子中是8080,所以不用localhost:8080
我使用的是192.168.51:8080
做……
"BadRequest"是一个通常由服务器本身发送的错误,参见rfc 2616
10.4.1 400个错误请求 由于语法错误,服务器无法理解请求。客户不应该在没有修改的情况下重复请求。
因此,您获得了到服务器的工作连接,但是您的请求不符合预期的形式。我不知道你如何创建连接,包括什么头(如果有的话)-但这是你应该检查。
如果您需要更多的帮助,请解释一下您的代码是关于什么的,以及它用来连接到服务器的是什么,这样我们就有了总体的了解。
这里有一个同样的问题-答案是内容类型没有设置在头部。