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

时间:2013-10-04 10:18:27

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

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

这是我的卷曲请求什么效果很好

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-continue

     

内容类型:multipart / mixed;边界= ---------------------------- 8aaca457e117

     
      
  • 额外的东西不精细transfer.c:1037:0 0
  •   
  • 具有持久连接的HTTP 1.1或更高版本,支持流水线
  •   

当我使用Postman时 enter image description here

我得到了这样的回应

{"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"}

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

2 个答案:

答案 0 :(得分:86)

我也遇到了这个问题。简答:从邮递员请求中删除Content-Type标题。

长篇大论是,多部分请求的Content-Type应该相当特殊 - 看起来应该是这样的:

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

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

您可以使用Chrome开发人员工具(在Postman中)来检查此行为,以检查要添加的Content-Type标头,以及多部分数据的Content-Disposition标头,这也是一个痛苦的问题。手动构建(在Postman中不可能)。

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

答案 1 :(得分:0)

https://github.com/postmanlabs/postman-app-support/issues/1104

上保留此评论

忍者更新:不确定是否对其他人有帮助,但是对于特定情况有一种解决方法,在单个多段POST请求中,您要上传多种文件类型/内容类型。

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

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