2017-02-15 64 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 

,然后处理它们来自你身边