android - 如何避免Retrofit在HTTP URL中编码单引号?

标签 android retrofit2 url-encoding

我想向 URL 包含单引号字符的 api 发送请求。我正在使用retrofit2。

我希望此网址能够到达 api: http://someapp.somecompany.com/api/contents/inc() ?$filter=_Id%20eq%20'57fb60534421dd35544b27a9'

我尝试了带有 (encoded=true) 和 (encoded=false) 属性的 @Query 和 @QueryMap 注释,但我的尝试都不起作用。

MyClient(界面)

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

MainActivity( Activity )

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

这段代码给了我这个输出:

--> 放置 http://someapp.somecompany.com/api/contents/inc() ?$filter=_Id%20eq%20%2757fb60534421dd35544b27a9%27 http/1.1(0 字节正文)

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

如何避免在 url 中对单引号进行编码?

谢谢。

最佳答案

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

其他ascii编码在此链接中:

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

关于android - 如何避免Retrofit在HTTP URL中编码单引号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39976241/

相关文章:

http - 什么时候应该在 HTTP URL 中对星号进行编码?

java - 将 ByteArray 从 PHP 发送到 Java

java - EditTextPreference 不适用于字符串

android - 如何使用大量图元在 Android Canvas 上绘制游戏

java - 将值作为对象获取如何将其转换为字符串并检索其值

java - Retrofit 不会从 Android 将 Java 对象作为 PHP 后端的 POST 参数传递

android - 为什么 EditText 聚焦在大于 7.0 的设备上时显示黑框

android - 发布带有Retrofit2问题的自定义对象

android - 调用成功时响应体为空(android)

java - Java 中针对非 ASCII 字符的 URL 解码