是否可以在multipart POST中嵌套multiparenties或FormBodyPart ?



我正在尝试使用multiparentity做以下服务器POST请求:

parameters: {"parameter1"=>"parameter1", "parameter2"=>{"sub_parameter1"=>"sub_parameter1", "sub_parameter2"=>"sub_parameter2"}}

我现在使用的是:

multipartEntity.addPart("parameter1", new StringBody("parameter1"));
FormBodyPart parameter2 = new FormBodyPart("parameter2", new StringBody("")); // It wouldn't allow a null ContentBody
parameter2.addField("sub_parameter1", "sub_parameter1");
parameter2.addField("sub_parameter2", "sub_parameter2");

但是,子字段不携带。我只得到:

parameters: {"parameter1"=>"parameter1", "parameter2"=>""}

如何在multiparentity或FormBodyPart元素中创建嵌套结构?

一旦您看到表单条目是如何通过HTTP连接传输的,您就会明白,不可能在多表单请求和url编码请求中嵌套任何内容。

事情很简单。多部分表单请求的格式为:

--- content-boundary ---
Content-Disposition: form-data; name="form_data_name"
[content (skipped)]
--- content-boundary ---

就是这样。有一个格式为:[表单条目名称]->[表单条目内容]的单一数据表单条目流,它对表单中的每个条目重复。它不是递归的,因此可能没有任何嵌套结构。

来源:

  1. 17.13.4表单内容类型
  2. RFC 2045 Internet消息体

考虑在请求正文中发送json。这样你就可以发送任何你想要的。

像这样:

MultipartEntity reqEntity = new MultipartEntity();
reqEntity.addPart("selectedGroup", new StringBody(group));
reqEntity.addPart("selectedService", new StringBody(service.toString()));
reqEntity.addPart("selectedTransformation", new StringBody(transformation.toString()));
reqEntity.addPart("projectId", new StringBody(projectId.toString()));

检查此链接的例8。同样是例23示例站点

为什么不张贴整个Json对象,而不是张贴每个字符串值

点击链接http://hmkcode.com/android-send-json-data-to-server/

我也有类似的需求,我最终调整了服务器端的代码以删除参数2,以便在客户端使用multiparentity。它运行得很好。

parameters: {"parameter1"=>"parameter1", "parameter2"=>{"sub_parameter1"=>"sub_parameter1", "sub_parameter2"=>"sub_parameter2"}}
parameters: {"parameter1"=>"parameter1", "sub_parameter1"=>"sub_parameter1", "sub_parameter2"=>"sub_parameter2"}

相关内容

  • 没有找到相关文章

最新更新