使用 Postman Chrome 扩展发送多部分/混合内容

Posted

技术标签:

【中文标题】使用 Postman Chrome 扩展发送多部分/混合内容【英文标题】:Sending multipart/mixed content with Postman Chrome extension 【发布时间】: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"

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

【问题讨论】:

这显然已经修复:github.com/postmanlabs/postman-app-support/issues/1104 【参考方案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 上联系我(查看我的个人资料)。 添加了新问题,***.com/questions/36540719/… 去掉显式header后,Postman包含multipart/form-data,与multipart/mixed不同。 @wst 你的批评是公平的,我已经修改了我的答案以更好地反映它的不足之处。话虽如此,它对许多人来说似乎仍然有用,所以我将其留给其他人。【参考方案2】:

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

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

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

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

【讨论】:

完美..谢谢这是有效的..我花了很多时间在如何将多部分/混合加密的 zip 文件作为附件发送

以上是关于使用 Postman Chrome 扩展发送多部分/混合内容的主要内容,如果未能解决你的问题,请参考以下文章

Chrome浏览器之 Postman 安装

手把手教你Chrome浏览器安装Postman(含下载云盘链接)(转)

Postman 如何发送请求? ajax,同源策略

Postman(网页调试)

离线安装Chrome 插件

postman安装及使用