首页 > 解决方案 > 如何在获取请求改造的 URL 中传递数据库查询?

问题描述

我正在创建一个改造获取请求,我需要在 kotlin 的 URL 中传递一个数据库查询和一些空间字符,如“$”。但我收到错误。

java.lang.IllegalArgumentException:URL 查询字符串不能有替换块。对于动态查询参数,使用@Query。

这是我在邮递员中使用但不能在改造中使用的 URL

https://someURL.com?customParam=true&pageSize=100&query= $filter=(drivercell eq'1111111119')$orderby=creationTimedesc&withTotalPages=true

这是调用改造方法的代码

     val restServiceModel = DRestServiceModel.create()
     val model = restServiceModel.getTripsData("Basic bWs6SU9UMTIzNCM=", "application/json", "\$filter=(drivercell%20eq'1111111119')")

这是方法

     @GET("inventory/managedObjects?customParam=true&pageSize=100&{query}\$orderby=creationTimedesc&withTotalPages=true")
     fun getTripsData(@Header("Authorization") token: String, @Header("Content-Type") contentType: String, @Query("query", encoded = true) query : String): Single<TripsResponseModel>

请帮我。

标签: androidkotlinretrofit2

解决方案


问题是您试图将路径参数放在查询中间,同时通过另一个查询提供它。你应该修改你的请求。尝试类似:

@GET("inventory/managedObjects")
fun getTripsData(@Header("Authorization") token: String,
                 @Header("Content-Type") contentType: String,
                 @Query("customParam") customParam: Boolean?,
                 @Query("pageSize") pageSize: Int?,
                 @Query("query", encoded = true) query: String,
                 @Query("withTotalPages") withTotalPages: Boolean?): Single<TripsResponseModel>

并像这样使用它:

val model = restServiceModel.getTripsData("Basic bWs6SU9UMTIzNCM=", "application/json", true, 100, "your query_goes here", true)

这种方式应该可以工作。


推荐阅读