Имя хоста не может быть нулевым в выполнении HttpResponse для android

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

  • Я DO имею разрешение на использование Интернета в файле манифеста
  • Я поставил 'http://' перед моим Url
  • Я DO кодирую 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

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

Ответ 1

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

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

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

Ответ 2

Просто используйте:

URLEncoder.encode(YOUR_STRING);

Ответ 3

Кодируйте строку 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);