2017-02-15 4 views
0

Je travaille sur un projet dans lequel j'utilise Volley comme bibliothèque réseau. Je dois poster un tableau de données sur le serveur.Android Volley Post Form Array Data

Mon code pour mettre params à cordes ressemble

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

et les données qu'il publie sur le serveur sont des données simples

Content-Disposition: form-data; name = "params"

5810707039473e73135c9b16

les données que je Quelle qu'en soit la veux poster ressemble

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

5810707039473e73135c9b16

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

5810707039473e73135c9b16

J'ai essayé de créer manuellement square brackets en utilisant ce code

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

Mais les données qu'il ressemble après

Content- Disposition: données de forme; name = "params% 5B0% 5D"

5810707039473e73135c9b16

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

5810707039473e73135c9b16

Voilà pourquoi sa ne se parsé sur le serveur.

Aidez-moi.

+0

Pourquoi n'essayez-vous pas avec 'HashMap '? –

Répondre

0

Enfin après avoir lu pour volley code interne de la bibliothèque (J'ai utilisé la bibliothèque open source de volley). J'ai compris le problème et l'ai résolu.

Pour d'autres qui sont frustrés que moi:

Aller à com\android\volley\toolbox\multipart\StringPart.java

Aller au constructeur StringPart.java

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

et changent ceci:

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

maintenant Je travaille dessus pour créer une classe StringArray personnalisée pour poster un tableau données qui ne nécessitent pas de le modifier. Dès que je vais finir avec, je posterai la source. Jusque-là, cela pourrait aider.

0

Vous pouvez transmettre toutes les valeurs de tableau JSON tableau comme celui-ci

[ 
5810707039473e73135c9b16, 
5810707039473e73135c9b16, 
5810707039473e73135c9b16 
] 

ou vous pouvez passer un objet séparés par une virgule [first_id, second_id, etc.]

5810707039473e73135c9b16,5810707039473e73135c9b16,5810707039473e73135c9b16 

puis les gérer de votre côté