【问题标题】:Sending multipart/mixed content with Postman Chrome extension使用 Postman Chrome 扩展发送多部分/混合内容
【发布时间】:2013-10-11 07:25:54
【问题描述】:

我正在努力使用 Postman Chrome 扩展程序创建 POST 多部分/混合请求

这是我的 curl 请求,效果很好

curl -H "Content-Type: multipart/mixed" 
-F "metadata=@simple_json.json; type=application/json "
-F "content=@1.jpg; type=image/jpg" -X POST http://my/api/item -i -v

回复中有趣的部分

内容长度:41557

期望:100-继续

内容类型:多部分/混合;边界=----------------8aaca457e117

  • 其他东西不好 transfer.c:1037: 0 0
  • HTTP 1.1 或更高版本,具有持久连接,支持流水线

当我使用 Postman 时

我得到这样的回应

{"message":"Could not parse multipart servlet request;
 nested exception is org.apache.commons.fileupload.FileUploadException: 
 the request was rejected because no multipart boundary was     
 found","type":"error","status":500,"requestId":"1861eloo6fpio"}

就是这样 - 我希望摆脱这个错误。 如果需要更多信息,请询问:)

【问题讨论】:

标签: google-chrome curl http-headers postman http-request


【解决方案1】:

我也遇到过这个问题。简短回答:从 Postman 请求中删除 Content-Type 标头。

长话短说,多部分请求的Content-Type 应该相当特别——它应该看起来像这样:

multipart/form-data; boundary=----WebKitFormBoundaryzeZR8KqAYJyI2jPL

问题在于边界很重要,它需要完全匹配用于分隔上传文件的边界。解决方案很简单:不要指定Content-Type!当您上传文件时,Postman 会自动为您附加上述内容类型,但边界将填写 Postman 或 Chrome 用于分隔多部分内容的任何内容。

除了多部分数据的 Content-Disposition 标头之外,您还可以使用 Chrome 开发人员工具(在 Postman 中)检查添加的 Content-Type 标头来验证此行为,这也是手动构建的痛苦(和在 Postman 中是不可能的)。

注意:我的答案是为需要multipart/form-data 答案的人提供的解决方案。 OP 正在寻找multipart/mixed 解决方案。在这种情况下,我的回答是不够的。话虽如此,似乎很多人只是想要multipart/form-data 解决方案,所以我将在此处留下答案。

【讨论】:

  • 尝试删除内容类型,但不起作用。 curl 请求有效,但从 POSTMAN 尝试时失败
  • @Aditya,它至少适用于其他 33 人。 :) 也许你最好问一个新问题,这样你就可以发布你的标题、回复等(也可以随意参考这个问题)或者你可以在 Twitter 上联系我(查看我的个人资料)。
  • 去掉显式header后,Postman包含multipart/form-data,与multipart/mixed不同。
  • @wst 你的批评是公平的,我已经修改了我的答案以更好地反映它的不足之处。话虽如此,它对许多人来说似乎仍然有用,所以我将其留给其他人。
【解决方案2】:

将此评论留在:https://github.com/postmanlabs/postman-app-support/issues/1104

Ninja 更新:不确定这是否对其他人有帮助,但对于在单个多部分 POST 请求中上传多个文件类型/内容类型的特定场景,有一种解决方法。 p>

  1. 将标头Content-Type 设置为multipart/mixed
  2. Body 中选择form-data 选项。
  3. 将所有项目转换为文件。字符串内容应该变成文本文件等。
  4. 通过选择file 添加每个文件,添加一个键名。

这种方法不需要实际手动指定每个Content-TypeContent-Disposition。这里的技巧是将所有相关内容序列化为持久文件类型。如果是文本,您可以忽略“将其转换为文件”步骤 :) 希望对某人有所帮助!

【讨论】:

  • 完美..谢谢这是有效的..我花了很多时间在如何将多部分/混合加密的 zip 文件作为附件发送
猜你喜欢
  • 2017-01-11
  • 2016-07-20
  • 2012-09-27
  • 2011-09-17
  • 1970-01-01
  • 2016-09-02
  • 1970-01-01
  • 2016-08-11
  • 2014-02-04
相关资源
最近更新 更多