【发布时间】:2016-11-10 01:30:53
【问题描述】:
尝试从 android 模拟器连接到本地主机上的 Web 服务时,我收到“连接被拒绝”或“错误请求”。我已将端口号添加到防火墙以允许连接,并且我尝试了here 给出的建议来修改 applicationhost.config
Web 服务和模拟器都在同一台 (Windows 10) 电脑上运行。在服务器的 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>
AFAIK 模拟器可以找到网络服务器(我没有收到“未找到”错误),但服务器拒绝连接。
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/,我会收到异常 'connection denied'
【问题讨论】:
-
请显示使用的代码和使用的地址。
-
还有什么不清楚:模拟器是否与您的网络服务在同一台电脑上运行?如果您有三台电脑/笔记本电脑,那么它们都是它们自己的本地主机。所以如果你谈论 localhost 那么我们怎么知道你的意思呢?
-
模拟器是它自己的虚拟机,有自己的IP,所以localhost指的是模拟器。如果要连接到运行模拟器的 PC,请使用它的 IP 或 FQDN。
-
谢谢,更多信息现已添加到原始帖子中。我知道模拟器的 IP,但是如何告诉服务器接受来自它的连接?