首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >HttpGet返回UnknownHostException

HttpGet返回UnknownHostException
EN

Stack Overflow用户
提问于 2012-02-20 19:25:25
回答 2查看 990关注 0票数 0

我在android应用程序中使用WCF REST服务时遇到问题。客户端一直抛出UnknownHostException。

代码语言:javascript
复制
HttpClient httpclient = new DefaultHttpClient();
HttpGet request = new HttpGet("http://windows");
ResponseHandler<String> handler = new BasicResponseHandler();
String result = httpclient.execute(request, handler);

WCF服务是托管在IISExpress (http://windows:80),它在浏览器以及在同一局域网(我正在开发安卓客户端的远程框)的本地工作。

安卓的权限在清单中是正常的,我已经在google.com上尝试过HttpGet,它工作正常。

有人能解释一下,为什么安卓不能打开连接(http://windows:80)托管在局域网的远程电脑通过IISExpress,而浏览器打开它(在两台电脑上)没有问题?

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-02-29 23:52:36

如果你在Windows上,你的桌面很可能可以访问http://windows,因为它有一个默认域后缀/搜索范围,返回完全限定的域名"windows.x.x",其中x.x =你的内部域。或者,它可以使用WINS解析主机。

android或android模拟器可能没有相同的DNS搜索范围/后缀,所以你必须提供完全限定的域名(全限定域名,即windows.yourdomain.com)。

使用"nslookup“(windows)或"dig”/ "host“(linux)之类的DNS查询工具来验证android或android模拟器尝试使用的DNS服务器:

Windows的示例

使用"ipconfig /all“查找您的DNS服务器和DNS域后缀...

代码语言:javascript
复制
c:\> ipconfig /all

Windows IP Configuration

Host Name . . . . . . . . . . . . : MYLAPTOP
Primary Dns Suffix  . . . . . . . : mydomain.com <<<<
Node Type . . . . . . . . . . . . : Hybrid
IP Routing Enabled. . . . . . . . : No
WINS Proxy Enabled. . . . . . . . : No
DNS Suffix Search List. . . . . . : mydomain.com <<<<

Ethernet adapter Local Area Connection:
Connection-specific DNS Suffix  . : mydomain.com
Description . . . . . . . . . . . : Intel(R) 82577LM Gigabit Network Connection
Physical Address. . . . . . . . . : xx-xx-xx-xx-xx-xx
DHCP Enabled. . . . . . . . . . . : Yes
Autoconfiguration Enabled . . . . : Yes
IPv4 Address. . . . . . . . . . . : 192.168.42.101 (Preferred)
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Lease Obtained. . . . . . . . . . : Wednesday, February 29, 2012 9:28:23 AM
Lease Expires . . . . . . . . . . : Thursday, March 08, 2012 9:28:22 AM   
Default Gateway . . . . . . . . . : 192.168.42.1
DHCP Server . . . . . . . . . . . : 192.168.42.5
DNS Servers . . . . . . . . . . . : 192.168.42.6  <<<<
                                    192.168.42.7
Primary WINS Server . . . . . . . : 192.168.42.6
Secondary WINS Server . . . . . . : 192.168.42.7
NetBIOS over Tcpip. . . . . . . . : Enabled ...

从上面可以看到,我们的DNS域是"mydomain.com“,我们的主DNS服务器是"192.168.42.6”。DNS服务器应该能够解析"windows.mydomain.com“(或者本例中的任何域)。

验证您的服务器是否可以解析完全限定的主机名:

代码语言:javascript
复制
c:\> nslookup windows.mydomain.com 192.168.42.6

(将192.168.42.6替换为您的DNS服务器)

您应该得到如下内容(假设在我的示例中,windows在DHCP和DNS服务器中注册为192.168.42.106:

代码语言:javascript
复制
C:\>nslookup windows.mydomain.com 192.168.42.6
Server:   dns01.mydomain.com
Address:  192.168.42.6
Name:     windows.mydomain.com
Address:  192.168.42.106

如果你得到一个无效的响应,比如...

*** dns01.mydomain.com can't find windows: Non-existent domain

那么您要查找的主机不在您提供的DNS域中,因此您的android /仿真器的默认DNS域和DHCP之间可能不匹配。

或者,您可以直接使用IP地址,如上所述。

票数 1
EN

Stack Overflow用户

发布于 2012-02-20 19:28:23

您是否尝试过将"windows“主机名替换为IP?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9360350

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档