这是界面方法:
@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?
谢谢。
答案 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注释