2017-02-15 16 views
0

Я работаю над проектом, в котором я использую Volley как сетевой библиотеки. Мне нужно отправить массив данных на сервер.Android Volley Сообщение Форма массива данных

Мой код поместить строку Params выглядит

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

И данные, которые он отправляет на сервер холост данные

Content-Disposition: форм-данных; Name = "Титулы"

5810707039473e73135c9b16

Каким бы данные, которые я хочу, чтобы опубликовать как выглядит

Content-Disposition: форм-данных; Name = "PARAMS [0]"

5810707039473e73135c9b16

Content-Disposition: форм-данных; Name = "Титулы [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

Content-Disposition: форм-данных; имя = "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 

, а затем обрабатывать их с вашей стороны