首页 > 解决方案 > Retrofit2 对查询值进行编码,即使编码=true

问题描述

使用 Retrofit 2.4,我正在调用一个 API,它接收 JSON 对象作为查询字符串的一部分,例如 /list?filter={"columns":"a,b,c","start":""... }

我之前没有编写转换器,而是使用杰克逊映射器将对象写为字符串。

fun getReport(@Query("filter", encoded = true) request: String)

但是改造所做的是它不对括号进行编码,而是对所有引号进行编码,然后 url 变为:

过滤器={%22columns%22: ...

这当然会导致调用问题。

想法?

标签: kotlinretrofit2

解决方案


在您的函数中使用 QueryMap

@QueryMap(encodeNames = true) 

更多详细信息请参阅注解类型 QueryMap


推荐阅读