2012-02-20 3 views
0

내 안드로이드 응용 프로그램에서 WCF REST 서비스를 사용하는 데 문제가 있습니다. 클라이언트는 UnknownHostException을 계속 throw합니다. (: // 창 : HTTP 80)HttpGet에서 UnknownHostException을 반환합니다.

HttpClient httpclient = new DefaultHttpClient(); 
HttpGet request = new HttpGet("http://windows"); 
ResponseHandler<String> handler = new BasicResponseHandler(); 
String result = httpclient.execute(request, handler); 

WCF 서비스는 IISExpress에서 호스팅되는 그것은 브라우저에서뿐만 아니라 (I 안드로이드 클라이언트를 개발하고) 동일한 LAN에 원격 상자 및 localY 작동합니다.

Android 매니페스트의 사용 권한은 google.com에서 HttpGet을 시도했지만 정상적으로 작동합니다.

브라우저에서 IISExpress를 통해 LAN에있는 원격 컴퓨터에서 호스팅되는 (http : // windows : 80) that ands does nots는 (두 컴퓨터 모두에서) 아무 문제없이 브라우저에서 열리는 이유를 설명해주십시오.

감사합니다.

+0

컴퓨터 이름 대신 서버의 직접 IP를 사용해 보셨습니까? – denolk

+0

그게 전부가 아니라, 기계의 IP 주소가 없습니다. – jeet

+0

TeddyBearFr의 anwsers 코멘트를 확인하십시오. – no9

답변

1

Windows를 사용하는 경우 데스크톱에 http://windows에 액세스 할 가능성이 높습니다. 기본 도메인 접미사/검색 범위에 정규화 된 도메인 이름 "windows.x.x"(x.x = 내부 도메인)가 반환되기 때문입니다. 또는 WINS를 사용하여 호스트를 확인할 수도 있습니다.

android 에뮬레이터에는 DNS 검색 범위/우편 번호가 동일하지 않으므로 FQDN (정규화 된 도메인 이름, 즉 windows.yourdomain.com)을 제공해야합니다.

예를 들면 다음과 같습니다

는 DNS 서버 안드로이드이나 안드로이드 에뮬레이터를 사용하려고하는지 확인 "nslookup을"(창) 또는 "파고"/ "호스트"(리눅스)와 같은 DNS 쿼리 도구를 사용하여 윈도우

사용 "ipconfig/all을"은 DNS 서버와 DNS 도메인 접미사 ... 위부터

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"(또는 귀하의 도메인이이 경우)을 해결할 수 있어야합니다.

완전한 호스트 이름 해결할 수있는 서버를 확인합니다

c:\> nslookup windows.mydomain.com 192.168.42.6 

(당신의 DNS 서버 192.168.42.6 교체)

당신이 뭔가를 얻어야한다을 (창에 등록 나의 경우 가정 192.168.42.106로 DHCP 및 DNS 서버 (들) :

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 도메인에없는, 그래서 당신의 안드로이드/에뮬레이터에 대한 기본 DNS 도메인 및 DHCP 사이에 불일치가있을 수 있습니다.

위에서 언급 한 것처럼 직접 IP 주소를 사용할 수도 있습니다.

1

"windows"호스트 이름을 IP로 바꾸려고 했습니까?

+0

WCF 서비스가 http : // hostname : 80의 IISExpress에서 실행되는 동안 IIS 홈 페이지가 IP로 호스팅됩니다. – no9

+0

나는 IISExpress에 그것을 얻기 위해 http://www.hanselman.com/blog/WorkingWithSSLAtDevelopmentTimeIsEasierWithIISExpress.aspx를 따라왔다. IIS를 설치하고 IIS에서 실행되도록 IISExpress를 설정해야합니까? 컴퓨터 호스트 이름을 사용하는 ANDROID 응용 프로그램에서 서비스를 사용할 방법이 없습니까? – no9

+0

jitendra sharma가 말했듯이 "windows"는 완전한 도메인 이름이 아닙니다. FQDN을 먼저 시도하십시오. 그것은 내가 생각하는 IIS 문제가 아닌 DNS 문제입니다. – Sly