2016-06-06 120 views
0

我试图使用Retrofit向我的服务器发送一个字符串数组。如果我的方法是:格式化输入字符串数组

@FormUrlEncoded 
@Post("postData") 
Call<Response> postData(@Field("data") String[] data); 

而且我输入的是:

new String[]{"data1", "data2"} 

改造其转换为:

data=data1&data=data2 

我的问题是:如何得到改造,以我的数组转换为取而代之的是:

data=[data1,data2] 

我是你唱改装2.0.2。

回答

1

根据文档,在@Field注释中传递列表或数组将导致每个项目的字段对。对于其他一切,Retrofit使用String.valueOf。来源here和杰克沃顿关于改变它的评论here

现在,您可能会停留在制作自定义课程并重写toString。例如:

public class StringList { 
    private List<String> mData; 

    public StringList(List<String> data) { mData = data; } 

    @Override 
    public String toString() { return mData.toString(); } 
} 

然后你改造成为声明:

@FormUrlEncoded 
@Post("postData") 
Call<Response> postData(@Field("data") StringList data); 
+0

鼠!看起来你是对的。 [这里是](https://github.com/square/retrofit/issues/1161)另一个拒绝的人的链接(像我一样)。谢谢您的帮助。 –