【发布时间】:2014-09-30 20:39:51
【问题描述】:
我在我的 Android 应用中为我的网络层使用 Retrofit,但我的 URL 编码有问题。
我必须像这样调用 REST API:
https://my_hostname.com/some_path?q=some_query¶m[0]=value1¶m[1]=value2&other_param=abcd
你可以看到查询字符串是由一些不同类型的参数组成的,所以我决定在 Retrofit Interface 中使用 @QueryMap 注释和 Map<String, String> 其中
q, param[1], param[0], other_param 是地图的字符串键
我期待什么?
我希望 URL 中的方括号用%5B 编码为'[' 和%5D 为'[',但这不会发生。
为什么会这样?方括号应使用百分比编码进行编码。这是一个错误还是我做错了什么?我还尝试了 @EncodedQueryMap 注释,没有任何区别。
【问题讨论】:
-
看起来你的 rest api 应该期望
params是一个值数组 -
我认为你的休息服务器不应该在变量名中使用
[],而是在其他任何地方使用它,作为一个列表指示符,在这种情况下括号不应该被编码。 -
如果不对括号进行编码,服务器 API 将无法正常工作。我需要对括号进行编码,但我想知道如何通过改造而不是手动进行。
标签: java android urlencode retrofit