Retrofit2复杂请求

时间:2017-12-27 11:51:36

标签: java android retrofit2

我正在尝试使用Retrofit2创建请求。我使用标准库创建了请求:

path = "https://www.iii.com/?id="+id+"&data=";
query = "{\"name\":\""+name+"\",\"quantity\":20}";

最终链接是:

link = path+URLEncoder.encode(query, "UTF-8");

我尝试了不同的Retrofit2选项,但我无法理解如何使用url编码的路径和查询将我的链接转换为Retrofit2链接?

2 个答案:

答案 0 :(得分:1)

您可以使用以下代码解析GET查询参数以进行改造:

@GET("https://www.iii.com")
Observable<ResponseBody> getSomething(
        @Query("id") int id,
        @Query("data") String data
);

Retrofit将为您构建它。只需传递您的变量(假设您知道如何调用改装请求)并进行改造将url为您编码。您可以参考以下链接:https://square.github.io/retrofit/2.x/retrofit/index.html?retrofit2/http/Query.html

  

使用Retrofit.stringConverter(Type,Annotation [])(或Object.toString(),如果未安装匹配的字符串转换器)然后URL编码,将值转换为字符串。空值被忽略。传递List或数组将导致每个非null项的查询参数。

答案 1 :(得分:1)

您可以为此添加anotation,如下所示

@Headers("charset=UTF-8")
@GET("https://www.iii.com")
Observable<ResponseBody> getSomething(
        @Query("id") int id,
        @Query("data") String data
);