2012-02-20 3 views
0

У меня проблема с использованием службы WCF REST в моем приложении для Android. Клиент продолжает бросать UnknownHostException.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 (HTTP: // Windows: 80), и он работает в, локальной браузере, а также в выносном боксе, в той же локальной сети (где я разрабатываю ANDROID клиента).

Права на Android в манифесте в порядке, и я попробовал HttpGet на google.com, и он работает нормально.

Может кто-нибудь объяснить, почему андроид не может открыть соединение с (http: // windows: 80), которое размещено на удаленном компьютере в локальной сети через IISExpress, в то время как браузер открывает его (на обоих компьютерах) без проблем?

спасибо.

+0

Вы пытались использовать прямой IP-адрес сервера вместо имени компьютера? – denolk

+0

Это не полный URL-адрес, у него нет IP-адреса машины. – jeet

+0

, пожалуйста, проверьте комментарии пользователя TeddyBearFr – no9

ответ

1

Если вы работаете в Windows, скорее всего, ваш рабочий стол может получить доступ к http://windows, потому что у него есть область постов/поиска домена по умолчанию, которая возвращает полное доменное имя «windows.x.x», где x.x = ваш внутренний домен. В качестве альтернативы, это может быть решение хоста с использованием WINS.

Андроид или андроид-эмулятор, вероятно, не имеют той же области поиска DNS/постфикса, поэтому вам нужно будет предоставить полное доменное имя (полное доменное имя, то есть windows.yourdomain.com).

Используйте инструмент запроса DNS, как «NSLOOKUP» (Windows) или «рыть»/«хозяин» (Linux), чтобы убедиться, что DNS-сервер андроида или андроид эмулятор пытается использовать:

Пример для Окна

Использование «IPCONFIG/все», чтобы найти свой 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 

(заменить 192.168.42.6 с DNS-сервером)

Вы должны получить что-то вроде этого (предполагая, что в моем случае, что окна зарегистрированы DHCP-сервер и DNS (ы) в качестве 192.168.42.106:

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 для Android/эмулятора.

В качестве альтернативы вы можете просто использовать IP-адрес, как указано выше.

1

Вы пытались просто заменить имя «windows» на IP?

+0

У меня есть домашняя страница IIS, размещенная на IP, а служба WCF работает на IISExpress по адресу http: // hostname: 80. – no9

+0

Я следил за http://www.hanselman.com/blog/WorkingWithSSLAtDevelopmentTimeIsEasierWithIISExpress.aspx, чтобы получить его на IISExpress. Должен ли я устанавливать IIS и запускать IISExpress для работы по IP? Невозможно ли использовать эту услугу в приложении ANDROID с помощью имени компьютера? – no9

+0

Как сказал jitendra sharma, «окна» - это не полное доменное имя. Сначала попробуйте FQDN. Это проблема DNS, а не проблема IIS, я думаю. – Sly