使用 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-Type
或Content-Disposition
。这里的技巧是将所有相关内容序列化为持久文件类型。如果是文本,您可以忽略“将其转换为文件”步骤 :) 希望对某人有所帮助!
【讨论】:
完美..谢谢这是有效的..我花了很多时间在如何将多部分/混合加密的 zip 文件作为附件发送以上是关于使用 Postman Chrome 扩展发送多部分/混合内容的主要内容,如果未能解决你的问题,请参考以下文章