Android改造发送2d数组

时间:2016-07-03 11:01:54

标签: android gson retrofit okhttp

我正在使用改造与服务器进行通信。

我想发送一个像这样的二维数组

album[0][uuid]:test
album[0][title]:test
album[0][public_text]:aaaaaalhjkl
album[0][private_text]:aaaaaalhjkl
album[1][uuid]:test2
album[1][title]:test2
album[1][public_text]:aaaaaalhjasdfkl
album[1][private_text]:aaaaaalhasdfjkl

在另一个电话中,当我需要只发送uuid我试过这个并且它有效

Call<response> deleteAlbum(@Header("token") String userToken, @Field("album[][uuid]") ArrayList<String> uuid);

并且我传递了一个字符串的arraylist,它工作正常。 但在这里,我有一个更复杂的pararigm,我不知道该怎么做。 如果我尝试这样的事情

Call<response> updateAlbum(@Header("token") String userToken, @Field("album[][uuid]")ArrayList<String> ablumids,@Field("album[][title]")ArrayList<String> title,@Field("album[][public_text]")ArrayList<String> public_text,@Field("album[][private_text]")ArrayList<String> private_text);

服务器只读取第一个字段(uuid)并以&#34响应;没有足够的参数&#34; 。有没有人想过如何解决这个问题?

谢谢

1 个答案:

答案 0 :(得分:0)

好的,所以我想出了答案

电话必须是

Call<response> updateAlbum(@Header("token") String userToken, @FieldMap Map<String, String>  ablumids);

并传递这样的数据

HashMap<String, String> t = new HashMap<String, String>();
    t.put("album[0][uuid]","test");
    t.put("album[0][title]","changeTitleTest2");
    t.put("album[0][public_text]","aaaaaalhjkl");
    t.put("album[0][private_text]","aaaaaalhjkl");

我不知道它是否是最佳解决方案,但它有效