我想url编码我在retrofit2中的查询参数,但它不起作用。让我告诉你我想要达到的最终结果:
https://mywebsite.com/dropoff-addresses?filter%5Bshop_id%5D=1
所以应该对过滤器查询参数进行编码。
这是我的改装电话看起来很不幸的事情:
网址:https://mywebsite.com/dropoff-addresses?filter[shop_id]=1
这是我用过的代码:
interface MyApi {
@GET("dropoff-addresses")
@Headers("Content-Type:application/json")
fun getDropOffAddresses(@QueryMap filter: Map<String, String> ): Observable<DropOffAddressModel>
}
现在即使我使用encoded = true或encoded = false也会发生什么?
@GET("dropoff-addresses")
@Headers("Content-Type:application/json")
fun getDropOffAddresses(@QueryMap(encoded=true) filter: Map<String, String> ): Observable<DropOffAddressModel>
}
来自docs的我们知道encoded = true意味着你告诉改造你已经对字符串进行了ALREADY编码。所以我不想要那个,我想改装为我编码。我也试过没有@QueryMap同样的事情,我尝试使用@Query但结果相同。它喜欢encoded = true或encoded = false什么都不做。我究竟做错了什么 ?
来自docs的它说@Query map应该已经为我编码了:
映射键和表示参数值的值是由URL编码的 默认。指定encoded = true可更改此行为。
这是gradle依赖项:
implementation 'com.squareup.retrofit2:adapter-rxjava2:2.3.0'
implementation 'com.squareup.retrofit2:retrofit:2.3.0'
implementation 'com.squareup.picasso:picasso:2.5.2'
implementation 'com.squareup.retrofit2:converter-gson:2.3.0'