Имя хоста не может быть null в HttpResponse execute для android

Я получаю ошибку "целевой хост не должен быть нулевым или установлен в параметрах".

  • Я иметь разрешение на интернет в моем файле манифеста
  • Я поставил 'http://' перед моим Url
  • Я кодировать URL

Это мой код:

   String url = "http://maps.google.com/maps/api/directions/json?origin=1600 Pennsylvania Avenue NW, Washington, DC 20500&destination=1029 Vermont Ave NW, Washington, DC 20005&sensor=false";
   HttpClient httpclient = new DefaultHttpClient();
   String goodURL = convertURL(url);//change weird characters for %etc
   HttpPost httppost = new HttpPost(goodURL);
   HttpResponse response = httpclient.execute(httppost);

в 5-й строке (последняя строка выше) моя программа выдает исключение. вот точная ошибка:

java.lang.IllegalArgumentException: Host name may not be null

Я кодируйте мою строку в методе convertURL...

goodURL= http://maps.google.com/maps/api/directions/json?origin=3%20Cedar%20Ave%2c%20Highland%20Park%2c%20NJ%2008904&destination=604%20Bartholomew%20Road%2c%20Piscataway%2c%20New%20Jersey%2008854&sensor=false

какие предложения? Спасибо!

3 ответов


Я не уверен, что ваш метод кодирования URL-адреса, но если вы используете метод из рамок как URLEncoder, вы никогда не должны передавать полный URL, только список параметров, которые вам нужно кодировать, чтобы избежать специальных символов.

кодирование полного URL-адреса будет процентов избежать каждого символа, включая :// на %3A%2F%2F и все дополнительные косые черты в %2F.

взгляните на значение вашего goodUrl строка после кодирования он.


просто использовать:

URLEncoder.encode(YOUR_STRING);

кодируйте строку URL перед отправкой запроса, но только кодируйте параметры после ?:

String url = "http://maps.google.com/maps/api/directions/json?";
String params = "origin=1600 Pennsylvania Avenue NW, Washington, DC 20500&destination=1029 Vermont Ave NW, Washington, DC 20005&sensor=false";
HttpClient httpclient = new DefaultHttpClient();
String goodParams = convertURL(params);//change weird characters for %etc
HttpPost httppost = new HttpPost(url + goodParams);
HttpResponse response = httpclient.execute(httppost);