2012-05-18 4 views
1

Я пытаюсь выдать получить с двоеточием в одном из моих параметров, но она не с unknownHostException здесь мой код:Apache HttpClient HttpGet URL двоеточием

String id = "{\"ID\":\"John Doe\"}"; 
String encodedID = URLEncoder.encode(id, "UTF-8").replace("+", "%20"); 
endpoint="https://127.0.0.1/getResourceNameToUse?id=" + encodedID; 
HttpResponse response = new HttpResponse(); 
HttpGet httpget = new HttpGet(endpoint); 
response = httpclient.execute(httpget, new RESTResponseHandler()); 

Я получаю следующее сообщение об ошибке:

java.net.UnknownHostException: 127.0.0.1/getResourceNameToUse?id={"ID"

Таким образом, кажется, что двоеточие нарушает запрос на получение. Есть ли способ исправить это? Почему кодировка не устраняет проблему? Мой закодированный идентификатор выглядит следующим образом:

  
%7B%22ID%22%3A%22John%20Doe%22%7D 
+0

я был в состоянии исправить это, по существу, двойной URL кодирующего двоеточия: String ID = id.replace («:»,» % 3A "); – ferics2

ответ

0

я был в состоянии исправить это, по существу, двойной URL кодирующей двоеточие:

String id = "{\"ID\":\"John Doe\"}"; 
id = id.replace(":","%3A"); 
String encodedID = URLEncoder.encode(id, "UTF-8").replace("+", "%20"); 
endpoint="https://127.0.0.1/getResourceNameToUse?id=" + encodedID; 
HttpResponse response = new HttpResponse(); 
HttpGet httpget = new HttpGet(endpoint); 
response = httpclient.execute(httpget, new RESTResponseHandler()); 
2

Когда я запускаю приближение вашего кода, ваш полученный URL является:

https://127.0.0.0/getResourceNameToUse?id=%7B%22ID%22%3A%22John%20Doe%22%7D 

Это абсолютно действительный URL, насколько я могу видеть. Я не вижу в нем : символов, которые путают HttpClient. Давайте посмотрим на исключение:

java.net.UnknownHostException: 127.0.0.0/getResourceNameToUse?id={"ID" 

Он смотрит на меня, что-то не с помощью закодированного URL, так как он показывает {"ID в отличие от %7B%22ID%22. Любая вероятность, что ваш код в вашем сообщении не точно код, в котором вы работаете?

Я также замечаю, что вы идете на IP 127.0.0.0. Любой шанс, что вы хотели 127.0.0.1 для подключения к localhost?

+0

К сожалению, опечатка по адресу localhost. Я на самом деле нажал другой адрес, но не хотел его публиковать. Что касается URL-адреса, как вы видите, это точно так же, как я его отправил. Httpclient должен был декодировать его до того, как я его отправил, потому что мне пришлось удвоить URL-код для кодирования двоеточия. – ferics2

+0

Можете ли вы разместить фрагмент кода на http://pastebin.com/ @ ferics2? Мне очень интересно это увидеть. – Gray

+0

http://pastebin.com/7QkJ1yGF – ferics2

Смежные вопросы