2017-02-15 66 views
0

我正在使用Volley作爲網絡庫的項目。我需要將數組數據發佈到服務器。Android Volley Post Form Array Data

我的代碼把字符串PARAMS看起來像

for(int i=0;i<data.size();i++) 
{ 
    jsonObjReq.addStringParam("params",data.get(i).getId()); 
} 

它發佈到服務器的數據是單個數據

內容處置:表格數據; NAME = 「PARAMS」

5810707039473e73135c9b16

不論如何我要發佈的模樣

內容處置的數據:表單數據;名稱= 「PARAMS [0]」

5810707039473e73135c9b16

內容處置:形狀數據;名稱= 「PARAMS [1]」

5810707039473e73135c9b16

我試圖手動創建square brackets使用此代碼

for(int i=0;i<data.size();i++) 
{ 
    jsonObjReq.addStringParam("params["+i+"]",data.get(i).getId()); 
} 

但交看起來像

含量 - 的數據處置:表單數據; NAME = 「PARAMS%5B0%5D」

5810707039473e73135c9b16

內容處置:形狀數據; NAME = 「PARAMS%5B1%5D」

5810707039473e73135c9b16

這就是爲什麼它沒有得到在服務器上解析。

幫幫我。

+0

你爲什麼不嘗試'HashMap '? –

回答

0

最後在讀取volley庫內部代碼(我使用了開源庫volley)。我找出了問題並解決了它。

對於別人認爲是沮喪,因爲我是:

轉到com\android\volley\toolbox\multipart\StringPart.java

轉到StringPart.java構造

public StringPart(String name, String value, String charset) 
{ 
    . 
    . 
    final String partName = EncodingHelper.encode(name, HTTP.DEFAULT_PROTOCOL_CHARSET); 
    . 
    . 
} 

,並更改爲:

public StringPart(String name, String value, String charset) 
{ 
    . 
    . 
    final String partName = name; 
    . 
    . 
} 

現在我正在創建一個自定義的StringArray類來發布數組數據不需要修改。只要我完成它,我會發布源。直到那時它可能會有所幫助。

0

可以傳遞所有數組值作爲JSON數組像由逗號分隔的這個

[ 
5810707039473e73135c9b16, 
5810707039473e73135c9b16, 
5810707039473e73135c9b16 
] 

或可以傳遞項[first_id,second_id等]

5810707039473e73135c9b16,5810707039473e73135c9b16,5810707039473e73135c9b16 

,然後處理它們來自你身邊