我如何在 Retrofit 中使用 GET 方法发送 json 数据?
how can i send json data using GET method in Retrofit?
后端开发人员给了我 API 描述,使用 GET 方法,它是 JSON 格式。
我从未尝试过这种方式,据我所知,在请求正文中发送数据是不可能的。在改造库中使用 GET 方法。
他使用 Django。我尝试了查询和路径......但没有任何效果......即使我尝试了没有带参数的注释。
{
"data": "oicudsfqoerzxddadsdf"
}
1.
@GET("find/data")
fun findData(
@Header("Authorization") sessionId: String,
@Query("data") data: String
): Call<FinderResult>
2.
@GET("find/data")
fun findData(
@Header("Authorization") sessionId: String,
data: String
): Call<FinderResult>
3.
@GET("find/data")
fun findData(
@Header("Authorization") sessionId: String,
dataObj: DataObj
): Call<FinderResult>
@Keep
class DataObj(var data: String){
}
全部无效。但是,它使用原始格式在 Postman 上工作(应该 select JSON)。如何使用 JSON 的 GET 请求?有什么问题吗?
GET方法的目的只是从服务器获取数据,而不是发送数据。发送数据的唯一方法是在 url 中使用查询参数,它的限制是 2000 个字符。
当我们想要使用查询参数来发送数据时,我们应该小心发送格式正确的 url 字符。 JSON 需要在附加到 URL 之前进行处理。
所以我的建议是使用 @Query("<name of parameter which is specified by server>")
并将 @FormUrlEncoded
置于 findData
方法之上。
@FormUrlEncoded
@GET("find/data")
fun findData(
@Header("Authorization") sessionId: String,
@Query("<name of parameter which is specified by server>") data: String
): Call<FinderResult>
有关更多信息,请查看:
https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/GET
https://futurestud.io/tutorials/retrofit-send-data-form-urlencoded
https://www.vogella.com/tutorials/Retrofit/article.html
后端开发人员给了我 API 描述,使用 GET 方法,它是 JSON 格式。
我从未尝试过这种方式,据我所知,在请求正文中发送数据是不可能的。在改造库中使用 GET 方法。
他使用 Django。我尝试了查询和路径......但没有任何效果......即使我尝试了没有带参数的注释。
{
"data": "oicudsfqoerzxddadsdf"
}
1.
@GET("find/data")
fun findData(
@Header("Authorization") sessionId: String,
@Query("data") data: String
): Call<FinderResult>
2.
@GET("find/data")
fun findData(
@Header("Authorization") sessionId: String,
data: String
): Call<FinderResult>
3.
@GET("find/data")
fun findData(
@Header("Authorization") sessionId: String,
dataObj: DataObj
): Call<FinderResult>
@Keep
class DataObj(var data: String){
}
全部无效。但是,它使用原始格式在 Postman 上工作(应该 select JSON)。如何使用 JSON 的 GET 请求?有什么问题吗?
GET方法的目的只是从服务器获取数据,而不是发送数据。发送数据的唯一方法是在 url 中使用查询参数,它的限制是 2000 个字符。
当我们想要使用查询参数来发送数据时,我们应该小心发送格式正确的 url 字符。 JSON 需要在附加到 URL 之前进行处理。
所以我的建议是使用 @Query("<name of parameter which is specified by server>")
并将 @FormUrlEncoded
置于 findData
方法之上。
@FormUrlEncoded
@GET("find/data")
fun findData(
@Header("Authorization") sessionId: String,
@Query("<name of parameter which is specified by server>") data: String
): Call<FinderResult>
有关更多信息,请查看:
https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/GET
https://futurestud.io/tutorials/retrofit-send-data-form-urlencoded https://www.vogella.com/tutorials/Retrofit/article.html