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