2017-02-15 2 views
0

Ich arbeite an einem Projekt, in dem ich Volley als Netzwerkbibliothek verwende. Ich muss Array von Daten auf dem Server veröffentlichen. EinzeldatenAndroid Volley Post Form Array Daten

Content-Disposition

Meine Code-String params setzen sieht aus wie

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

Und die Daten, die sie an den Server-Beiträge: form-data; name = "params"

5810707039473e73135c9b16

Wohin auch immer die Daten Ich möchte Aussehen schreiben wie

Content-Disposition: form-data; name = "params [0]"

5810707039473e73135c9b16

Content-Disposition: form-data; name = "params [1]"

5810707039473e73135c9b16

Ich habe versucht, manuell square brackets zu schaffen mit diesem Code

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

Aber die Daten, die es Post wie

Content- sieht Disposition: Formulardaten; name = "params% 5B0% 5D"

5810707039473e73135c9b16

Content-Disposition: form-data; name = "params% 5B1% 5D"

5810707039473e73135c9b16

Das ist, warum die nicht auf dem Server analysiert zu werden.

Hilf mir.

+0

Warum versuchen Sie nicht mit 'HashMap '? –

Antwort

0

Schließlich nach dem Lesen für volley Bibliothek internen Code (ich verwendete Open Source-Bibliothek von volley). Ich habe das Problem herausgefunden und es gelöst.

Für andere, die frustriert sind, wie ich war:

Zum com\android\volley\toolbox\multipart\StringPart.java

Zum StringPart.java Konstruktor

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

und dies ändern:

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

Jetzt Ich arbeite daran, eine benutzerdefinierte StringArray-Klasse zum Veröffentlichen von Arrays zu erstellen Daten, die nicht geändert werden müssen. Sobald ich damit fertig bin, werde ich die Quelle veröffentlichen. Bis dahin könnte es helfen.

0

Sie können alle Array-Werte als JSON-Array übergeben, wie dieser

[ 
5810707039473e73135c9b16, 
5810707039473e73135c9b16, 
5810707039473e73135c9b16 
] 

oder können Sie Artikel durch Komma getrennt pass [FIRST_ID, second_id usw.]

5810707039473e73135c9b16,5810707039473e73135c9b16,5810707039473e73135c9b16 

und sie dann behandeln von Ihrer Seite