Android Volley Post 表单数组数据

Android Volley Post Form Array Data

我正在开展一个项目,其中我使用 Volley 作为网络库。我需要 post 数据数组到服务器。

我放置字符串参数的代码看起来像

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

并且它post发送到服务器的数据是单个数据

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

5810707039473e73135c9b16

无论我想要的数据如何 post 看起来像

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

5810707039473e73135c9b16

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

5810707039473e73135c9b16

我尝试使用此代码手动创建 square brackets

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

但是数据post看起来像

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

5810707039473e73135c9b16

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

5810707039473e73135c9b16

这就是它没有在服务器上被解析的原因。

帮帮我。

您可以像这样将所有数组值作为 Json 数组传递

[
5810707039473e73135c9b16,
5810707039473e73135c9b16,
5810707039473e73135c9b16
]

或者您可以传递以逗号分隔的项目 [first_id,second_id,等等]

5810707039473e73135c9b16,5810707039473e73135c9b16,5810707039473e73135c9b16

然后从你身边处理它们

终于看完了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 Class 到 post 数组数据。一旦我完成它,我将 post 来源。到那时它可能会有所帮助。