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 来源。到那时它可能会有所帮助。
我正在开展一个项目,其中我使用 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 来源。到那时它可能会有所帮助。