Имя хоста не может быть нулевым в выполнении 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);