Я хочу отправить запрос на 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-адресе?
Спасибо.
Я просто хочу, противоположное вашему предложению. Я не хочу, чтобы мой символ '' 'был заменен на% 27 путем модификации. Я попытался заменить подстроку '% 27' символом' '' на классе перехватчика, но не смог получить результат, который я хотел. – user2949556
Вы не можете сделать это, если у вас есть соглашение со стороны вашего сервера, чтобы изменить его на другой символ и отменить его на стороне сервера. У вас могут быть эти символы в вашем URL-адресе без автоматического изменения. Его веб-протокол, который не может содержать эти символы в вашем URL-адресе –
Я не думаю, что внутренняя ошибка сервера заключается в том, что одна одинарная цитата из-за того, что они автоматически отменяются на стороне сервера поставщиками веб-сервисов. –