2013-09-05 1 views
2

В моем проекте Android я использую Robospice с пружинным андроидом. Что отлично подходит для всех сообщений REST. Но для запроса запроса запроса «=» преобразуется в «&». Из-за этого запрос становится неудачным.URL-адрес строки запроса «=» преобразуется в «&»

Строка запроса: теги = [ «ключевые слова: по умолчанию = привет»]

Проверив журналы запрос преобразуется, как показано ниже для выполнения вызовов с помощью библиотеки.

http://XXX/rest/media/search?token=123&tags=%5B%22keywords:default&hello%22%5D 

здесь "=" знак преобразуется в "&" в "ключевые слова: по умолчанию = привет"

Запрос класса

здесь теги = string.Format ("[\" ключевые слова : default =% s \ "]", mTag);

@Override 
public MVMediaSearch loadDataFromNetwork() throws Exception 
{ 
    String search=""; 
    if(!tags.equals(Constants.EMPTY_DATA)) 
    search="&tags="+tags; 
    return getRestTemplate().getForObject(Constants.BASE_URL+"/media/search?token="+token+search, MVMediaSearch.class); 
} 

Если я запускаю URL-адрес в браузере, я получаю сообщение об ошибке. И если я изменил знак «&» на соответствующее ему значение URL-адреса в браузере, он отлично работает.

+1

вы пробовали использовать urlBuilder? – Dyna

+0

я пытался, но URL кодируется следующим образом, который не является правильным:% 255B% 2522keywords% 253Adefault% 253DAdult% 2522% 255D –

ответ

0

Вы можете сделать что-то вроде этого:

URI uri = new URI(
    "http", 
    Constants.BASE_URL, 
    "/media/search?token=", 
    token, 
    search, 
    null); 
String request = uri.toASCIIString(); 

взглянуть на THIS и посмотреть, если вы понимаете (вы должны адаптироваться к коду - это не полностью сделано для вас)

+0

бросает java.net.URISyntaxException: Относительный путь: CiBhZHVsdHN3aW0tdW5pdmVyc2FsLWFuZHJvaWRwaG9uZRIOMjAyLjg4LjIzNy4yMTIY4eKp7o4oIg1BZHVsdFN3aW1Bc2lhKIAEMggKAklOEgIxMzgHOAhAAQ –

+0

вы должны поставить HTTP в начале (я не знаю, что находится внутри вашего Constants.BASE_URL) – Dyna

+0

http: // уже есть –