使用Retrofit 2发送各种参数(JSON)

时间:2016-09-23 11:55:44

标签: android json retrofit2

这是界面方法:

@FormUrlEncoded
@POST (“url/myurl")
Call<JsonArray> sendParameters (@Header("x-imei") String imei, @Header("x-id-cliente") String idCliente, @Field(“param1") JsonObject param1, @Field(“param2") JsonArray param2, @Field(“param3") JsonArray param3, @Field(“param4") JsonArray param4,@Field(“param5") JsonArray param5);

使用它的方法:

Call<JsonArray> peticion= RetrofitClient.getRetrofitClient(getActivity()).sendParameters(settings.getString("imei", ""), settings.getString("idCliente", "”),param1,param2,param3,param4,param5);

这样,通话无效。

我尝试将所有接口参数更改为String,并在调用中执行param1.toString(),param2.toString()等,并且两者都不工作。

有没有一种简单的方法可以使用Retrofit 2在POST中发送JsonObjects和JsonArrays?

谢谢。

1 个答案:

答案 0 :(得分:0)

首先,您可以创建一个要作为POST正文传递的自定义类

class CustomClass {
   String param1;
   String parma2;
   String param3;
   //all of your params with getters and setters
}

然后使用@Body注释根据新的CustomClass实例更改Retrofit方法:

@POST (“url/myurl")
Call<JsonArray> sendParameters (@Header("x-imei") String imei, @Header("x-id-cliente") String idCliente, @Body CustomClass customClassInstance);

最后你打电话发布数据:

CustomClass customClassInstance = new CustomClass();
customClassInstance.setParam1(...);
//...and so on

Call<JsonArray> peticion= RetrofitClient.getRetrofitClient(getActivity()).sendParameters(settings.getString("imei", ""), settings.getString("idCliente", ""), customClassInstance);

编辑:删除了@FormUrlEncoded注释