使用 JSON 参数改造 GET 请求

Posted

技术标签:

【中文标题】使用 JSON 参数改造 GET 请求【英文标题】:Retrofit GET request with JSON parameters 【发布时间】:2020-06-14 02:51:56 【问题描述】:

我正在尝试使用 Retrofit 我的自定义对象从 Parse Server 获取。

http 请求是:

https://MY.SERVER./1/classes/Fiestas?where="Epoca":"__type":"Pointer","className":"Epocas","objectId":"myObjectId"

所以我有这个界面:

@GET("Fiestas?where=\"Epoca\":\"__type\":\"Pointer\",\"className\":\"Epocas\",\"objectId\":\"epoca_id\"")
fun getFiestaByEpocaId(@Path("epoca_id") epoca_id: String): Deferred<JSONResponse>

但我收到此错误:

java.lang.IllegalArgumentException: URL query string "where="Epoca":"__type":"Pointer","className":"Epocas","objectId":"epoca_id"" must not have replace block. For dynamic query parameters use @Query.
    for method FiestaApi.getFiestaByEpocaId

有人知道在 kotlin 的 GET 改造请求中发送 JSON 的任何解决方案吗?

谢谢!

【问题讨论】:

【参考方案1】:

你可以试试这个:

@GET("Fiestas")
fun getFiestaByEpocaId(
    @Query("where") jsonString: String
): Call<JSONObject>

你的 json 对象是:

val jsonString = "\"__type\":\"Pointer\",\"className\":\"Epocas\",\"objectId\":\"epoca_id\""

并在请求方法之前调用jsonString.replace("\","")

【讨论】:

以上是关于使用 JSON 参数改造 GET 请求的主要内容,如果未能解决你的问题,请参考以下文章

改造 2 - URL 查询参数

如何使用android studio中的改造服务在请求中传递json

postman get请求可以输入json参数吗

如何为带有可选 URL 参数的 GET 请求映射不同的 JSON 响应

改造:@GET 命令中的多个查询参数?

带 json 参数的 curl GET 请求