如何使用Retrofit发布数组参数?

时间:2014-12-03 09:10:00

标签: retrofit

我希望post数据如下:

   {
     "user_id":"14545646",
    "list":["4545645","4545645","4545645","4545645"]
   }

我使用了以下Retrofit方法:

interface DeleteOrder {

         @FormUrlEncoded
         @POST("/api/shop/deleteOrder.json")
         void getPoJoDeleteOrder(@Field("user_id") String user_id, @Field("list") String[] list,Callback<PoJoDeleteOrder> callback);

      }

这是正确的方法吗?

3 个答案:

答案 0 :(得分:2)

如果有很多用户,请使用FieldMap

用户[0] [电子邮件] = <强> &安培;用户[0] [口令] = &安培;用户[1] [电子邮件] = <强> &安培;用户[1] [口令] =

@POST("/user/sign_in")

用户登录 (@FieldMap Map<String,String> fields);

    Map<String,String> fields = new HashMap<>();
    for (int i=0;i<users.size();i++) {
        User user= users.get(i);
        fields.put("user["+i+"][email]",user.email);
        fields.put("user["+i+"][password]",user.password);
    }

答案 1 :(得分:1)

这样它会发送像这样的参数

project_id=986&remark=testing&details=detail_1....

如果要以JSON格式发送数组,则需要将[]添加到数组名称。

 @FormUrlEncoded
    @POST("/api/projectLost")
    public void projectMarkLost(
        @Field("project_id") int projectId,
        @Field("lost_project_reasons[]") ArrayList<Integer> lostProjectReasons,
        Callback<JsonObject> cb
    );

这样你就可以用is_array($ arr)检查数组参数,然后迭代它。 Source link.

答案 2 :(得分:-2)

如果查询参数列表已修复,您可以执行以下操作:

iocon <- file("originalFile","r+")
header <- readLines(iocon,n=1)
header <- gsub('disp', 'newvar', header)
writeLines(header, con=iocon)

否则,使用@POST("/user/sign_in") User login( @Query("user[email]") String email, @Query("user[password]") String password); ,您需要将完整查询参数设置为键:

map

此答案直接来自:Github Retrofit