HttpGet в андроид, UnresolvedHostException - PullRequest
       11

HttpGet в андроид, UnresolvedHostException

0 голосов
/ 24 декабря 2009

Я довольно новичок в Android и пытаюсь реализовать http client для связи с REST server.

Я начинаю с метода Get, но у меня возникают проблемы с использованием android 2.0 на эмуляторе.

String url = "http://www.google.fr/search?q=android"
HttpClient client = new DefaultHttpClient(new BasicHttpParams());
HttpGet getMethod = new HttpGet((url));
HttpResponse httpResponse = client.execute(getMethod);
HttpEntity = httpResponse.getEntity());
int length = (int) httpEntity.getContentLength();
=> length is -1 :-(

Просмотр журналов дает мне UnresolvedHostException.

Я искал в Google и нашел несколько парней, у которых была такая же проблема, но которые не нашли никакого ответа.

Есть ли особый способ настроить эмулятор андроида, чтобы он работал?

Просто для уточнения, я добавил доступ в Интернет в android manifest.

Большое спасибо за вашу помощь. Люк

Ответы [ 3 ]

2 голосов
/ 25 декабря 2009

Сначала попробуйте получить доступ к этой странице из приложения Browser. Если это не помогло, проверьте брандмауэр или деактивируйте прокси-сервер.

Как только браузер сможет получить доступ к странице, попробуйте избавиться от new BasicHttpParams() (он не нужен) и посмотрите, поможет ли это. В противном случае то, что у вас есть, кажется нормальным.

0 голосов
/ 07 января 2010

Попробуйте URL без каких-либо GET-параметров (? Q = android).

String url = "http://www.google.fr/search";

Я думаю, что URL-параметры должны быть установлены по-другому?

0 голосов
/ 25 декабря 2009

Если вы сидите за прокси-сервером, вы можете установить IP-адрес / порт прокси-сервера в экземпляре DefaultHttpClient. Метод для этого будет выглядеть примерно так:

public void setProxy(DefaultHttpClient httpclient) {     
           final String PROXY_IP = "<insert your IP here>";     
            final int PROXY_PORT = <insert_PROXY_PORT#>;     

            httpclient.getCredentialsProvider().setCredentials(     
                    new AuthScope(PROXY_IP, PROXY_PORT),     
                    new UsernamePasswordCredentials(     
                            "username", "password"));     

           HttpHost proxy = new HttpHost(PROXY_IP, PROXY_PORT);     

           httpclient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY,     
                   proxy);     


       }   

Однако учтите, что если вы запускаете свой код на телефоне (у которого нет таких настроек прокси), вам придется отключить эту функцию;
На телефоне ваш существующий код должен нормально работать.

...