2016-06-06 172 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)另一個拒絕的人的鏈接(像我一樣)。謝謝您的幫助。 –