2016-10-11 10 views
0

Я хочу отправить запрос на api с URL-адресом, который содержит символы одиночной кавычки. Я использую retrofit2.Как избежать переоснащения для кодирования одиночной кавычки в HTTP-адресе?

Я хочу, чтобы этот URL, чтобы добраться до API:?http://someapp.somecompany.com/api/contents/inc() $ Фильтр = _Id% 20eq% 20'57fb60534421dd35544b27a9'

Я попытался @Query и @QueryMap аннотаций с (кодируются = истина), а также (кодированный = false), но ни один из моих попыток не работал.

MyClient (интерфейс)

@PUT("api/contents/inc()") 
Call<Object> addLike(@QueryMap(encoded =true) Map<String,String> options); 

MainActivity (активность)

Map<String,String> likeMap = new HashMap<>(); 
likeMap.put("$filter","_Id%20eq%20'57fb60534421dd35544b27a9'"); 
Call<Object> addLikeCall = myClient.addLike(likeMap); 
addLikeCall.enqueue(new Callback<Object>() {.....}); 

Этот код дает мне этот выход:

-> PUT http://someapp.somecompany.com/api/contents/inc() $ = фильтр _ID% 20eq% 20% 27% 2757fb60534421dd35544b27a9 HTTP/1.1 (0 байт тела)

< -? 500 Внутренняя ошибка сервера http://someapp.somecompany.com/api/contents/inc() $ = фильтр _ID% 20eq% 20% 27% 2757fb60534421dd35544b27a9 (132ms , 36-байтовый корпус)

Как я могу избежать модификации, чтобы закодировать мой единственный кавычек в URL-адресе?

Спасибо.

ответ

1

Вы можете заменить символ ' в своем URL-адресе %27 вручную, если он решает вашу проблему.

Другие кодировки ASCII в этой ссылке:

http://www.w3schools.com/TAGS/ref_urlencode.asp

+0

Я просто хочу, противоположное вашему предложению. Я не хочу, чтобы мой символ '' 'был заменен на% 27 путем модификации. Я попытался заменить подстроку '% 27' символом' '' на классе перехватчика, но не смог получить результат, который я хотел. – user2949556

+0

Вы не можете сделать это, если у вас есть соглашение со стороны вашего сервера, чтобы изменить его на другой символ и отменить его на стороне сервера. У вас могут быть эти символы в вашем URL-адресе без автоматического изменения. Его веб-протокол, который не может содержать эти символы в вашем URL-адресе –

+0

Я не думаю, что внутренняя ошибка сервера заключается в том, что одна одинарная цитата из-за того, что они автоматически отменяются на стороне сервера поставщиками веб-сервисов. –