尝试从 Android 模拟器连接到我在本地主机上的 Web 服务时,我收到“连接被拒绝”或“错误请求”。我已将端口号添加到防火墙以允许连接,并且我已尝试给出的建议 here修改applicationhost.config
Web 服务和模拟器都在同一台 (Windows 10) PC 上运行。在服务器的 web.config 中,我在“system.webserver”下有以下内容:
<httpProtocol>
<customHeaders>
<clear />
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Headers" value="Content-Type" />
<add name="Access-Control-Allow-Methods" value="GET, PUT, POST" />
</customHeaders>
</httpProtocol>
据我所知,模拟器可以找到 Web 服务器(我没有收到“未找到”错误),但服务器拒绝连接。
using (WebClient client = new WebClient())
{
string json = ......;
client.Headers[HttpRequestHeader.ContentType] = "application/json";
// I have also tried "application/x-www-form-urlencoded";
string result = client.UploadString(UrlBase.urlBase + "SaveLocation", json);
如果“UrlBase”是 http://192.168.1.73:60080/Service1.svc/ ,我收到“错误请求”,我知道这可能是由于 json 格式错误造成的。
如果“UrlBase”是远程服务器,连接有效(所以我知道 json 格式是正确的)。在远程和本地服务器上运行相同的更新 dll。
如果“UrlBase”是 http://localhost:60080/Service1.svc/ ,我收到异常“连接被拒绝”
最佳答案
我没有使用任何防火墙规则,因为我的模拟器与服务主机位于同一台机器上。正如杰森所说,你应该使用你的主机 IP 地址。 为避免许多问题,请使用本地 IIS 主机而不是 IIS express。您的“错误请求”不是无效的 Json,而是无效的主机名,因为 IIS express 将不允许任何连接,但来自本地计算机。您可以尝试在上面引用的链接中欺骗它,但何必呢?
这是 IIS Express 托管应用程序的结果。
这是本地 IIS 托管应用程序的结果
这里拿到项目后就是结果了:
关于android - 从 xamarin Vs2015 android 模拟器连接到本地 Web 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40399068/