2016-10-11 167 views
0

我想发送一个请求到一个包含单引号字符的URL的api。我正在使用retrofit2。如何避免对HTTP Url中的单引号进行编码修改?

我希望这个网址来达到API:http://someapp.somecompany.com/api/contents/inc() $过滤= _id%20当量%20'57fb60534421dd35544b27a9'

我试图@Query与(编码= TRUE),也@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%20当量%20%2757fb60534421dd35544b27a9%27 HTTP/1.1(0字节体)

< - ?500内部服务器错误http://someapp.somecompany.com/api/contents/inc() $滤波器= _id%20当量%20%2757fb60534421dd35544b27a9%27(132ms ,36字节的主体)

我如何避免翻新编码我的单引号在url?

谢谢。

回答

1

如果能解决您的问题,您可以用%27手动替换网址中的'字符。

其他ASCII编码是在这个环节:

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

+0

我只是想你的建议相反。我不希望我的'''字符被'%27'替换。我试图在拦截器类中用'''字符替换'%27'子字符串,但无法获得我想要的结果。 – user2949556

+0

你不能这样做,除非你有服务器端的约定来改变它的某些其他字符,并在服务器端反转它。你不能自动更改你的网址中的这些字符。它的网络协议,你不能在你的网址 –

+0

我不认为内部服务器错误是监守是单引号的监守会自动在服务器端通过Web服务提供商逆转有这些字符 –

相关问题