Android: IllegalStateException в HttpGet

Я пытаюсь отправить запрос GET с помощью HttpClient , но я продолжаю получать IllegalStateException . Любая идея, что вызывает это? Я искал решение, но я не понимаю, что означает "host=null" в журнале. Как установить хост и как он отличается от пути? Вот мой ловушка:

 07-17 11:54:18.002: W/System.err(15422): java.lang.IllegalStateException: Target host must not be null, or set in parameters. scheme=null, host=null, path=google.com 07-17 11:54:18.002: W/System.err(15422): at org.apache.http.impl.client.DefaultRequestDirector.determineRoute(DefaultRequestDirector.java:591) 07-17 11:54:18.002: W/System.err(15422): at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:293) 07-17 11:54:18.002: W/System.err(15422): at org.apache.http.impl.client.AbstractHttpClient$1.executeRequestSending(AbstractHttpClient.java:609) 07-17 11:54:18.002: W/System.err(15422): at org.apache.http.impl.client.naf.redirect.NafRequestExecutorWrapperRedirectionHandler.executeRequestSendingUsual(NafRequestExecutorWrapperRedirectionHandler.java:96) 07-17 11:54:18.002: W/System.err(15422): at org.apache.http.impl.client.naf.redirect.NafRequestExecutorWrapperRedirectionHandler.executeRequestSending(NafRequestExecutorWrapperRedirectionHandler.java:73) 07-17 11:54:18.002: W/System.err(15422): at org.apache.http.impl.client.naf.auth.NafHttpAuthStrategyDefault.sendFirstRequest(NafHttpAuthStrategyDefault.java:487) 07-17 11:54:18.002: W/System.err(15422): at org.apache.http.impl.client.naf.auth.NafHttpAuthStrategyDefault.performAuthExecutionUnsafe(NafHttpAuthStrategyDefault.java:388) 07-17 11:54:18.002: W/System.err(15422): at org.apache.http.impl.client.naf.auth.NafHttpAuthStrategyDefault.performAuthExecution(NafHttpAuthStrategyDefault.java:200) 07-17 11:54:18.002: W/System.err(15422): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:558) 07-17 11:54:18.002: W/System.err(15422): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:508) 07-17 11:54:18.002: W/System.err(15422): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:486) 07-17 11:54:18.002: W/System.err(15422): at myapp.httprequest.free.GETActivity$1sendRequestTask.doInBackground(GETActivity.java:102) 07-17 11:54:18.002: W/System.err(15422): at myapp.httprequest.free.GETActivity$1sendRequestTask.doInBackground(GETActivity.java:1) 07-17 11:54:18.002: W/System.err(15422): at android.os.AsyncTask$2.call(AsyncTask.java:264) 07-17 11:54:18.002: W/System.err(15422): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305) 07-17 11:54:18.002: W/System.err(15422): at java.util.concurrent.FutureTask.run(FutureTask.java:137) 07-17 11:54:18.002: W/System.err(15422): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076) 07-17 11:54:18.002: W/System.err(15422): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569) 07-17 11:54:18.002: W/System.err(15422): at java.lang.Thread.run(Thread.java:856) 

и источник:

 HttpClient getClient = new DefaultHttpClient(); HttpGet getData = new HttpGet(this.address); try { HttpResponse gameResponse = getClient.execute(getData); return EntityUtils.toString(gameResponse.getEntity()); } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (IllegalStateException e) { e.printStackTrace(); } 

Я думаю, вам нужно использовать .addHeader для HttpGet, например, для передачи данных в формате Json:

 public class Client { private String server; public Client(String server) { this.server = server; } private String getBase() { return server; } public String getBaseURI(String str) { String result = ""; try { DefaultHttpClient httpClient = new DefaultHttpClient(); HttpGet getRequest = new HttpGet(getBase() + str); getRequest.addHeader("accept", "application/json"); HttpResponse response = httpClient.execute(getRequest); result = getResult(response).toString(); httpClient.getConnectionManager().shutdown(); } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return result; } private StringBuilder getResult(HttpResponse response) throws IllegalStateException, IOException { StringBuilder result = new StringBuilder(); BufferedReader br = new BufferedReader(new InputStreamReader((response.getEntity().getContent())), 1024); String output; while ((output = br.readLine()) != null) result.append(output); return result; } } 

Я также предлагаю вам использовать timeoutConnection (до установления соединения) и timeoutSocket (тайм-аут для ожидания данных.) Для получения дополнительной информации: Java jersey RESTful запросы webservice

Также обратите внимание, что вам необходимо реализовать сетевое подключение в отдельном streamе для уровня API 11 или выше.

вам нужно добавить http:// для адреса, чтобы заставить его работать. Избегайте использования URLEncoder , если вы это сделаете.

Когда вы это сделаете:

 HttpGet getData = new HttpGet(this.address); 

что это this.address ? Я предполагаю, что это String , если это так, то должно выглядеть так:

 String address = "http://www.google.com/path/to/document"; 

Вы, наверное, сделали это:

 String address = "google.com"; 

Это ваша ошибка хоста. Вы передаете «www.host.com», вместо этого вам нужно пройти « http://www.w3schools.com ».

ссылка здесь

  • HttpClient не будет импортироваться в Android Studio
  • HttpClient 4.0.1 - как освободить соединение?
  • Android-проект с использованием httpclient -> http.client (apache), метод post / get
  • HttpClient 4 - как захватить последний URL переадресации
  • Interesting Posts

    как определить ориентацию устройства Android?

    Что вызывает ошибку Broken Pipe?

    Есть ли Java XML API, который может анализировать документ без разрешения объектов символов?

    Как разбить инструкцию по сборке по заданному адресу в gdb?

    Windows 7 выходит из сна, когда я открываю удаленный рабочий стол

    Служба Google Geocoder недоступна (координаты для адресации)

    EF Code First: Как я могу увидеть свойство EntityValidationErrors из консоли пакета nuget?

    SPARQL: существует ли какой-либо путь между двумя узлами?

    Есть ли способ интегрировать Eclipse с Gradle в проект Android?

    Используйте bash для чтения строки за строкой и сохраняйте пространство

    DownloadManager.ACTION_DOWNLOAD_COMPLETE, получающий один и тот же идентификатор загрузки более одного раза с разными статусами загрузки в Android

    Изменение цвета и шрифта для некоторой части текста в WPF C #

    Эффект блочного gradleиента в CSS3

    Spring: namespace vs contextConfigИнтересные параметры размещения в web.xml

    Как распознать салфетки во всех 4 направлениях

    Давайте будем гением компьютера.