昨天研发反馈使用EDI的HTTP调用结点时,http响应报错如下: Failed to parse multipart servlet requestnested exception is java.io.IOException: org.apache.tomcat.util.http.fileupload.FileUploadException: the request was rejected because no multipart boundary was found 。
EDI在构建http请求头时设置了 Content-Type 为“multipart/form-datacharset=UTF-8”,缺失了 boundary ,导致了如上错误。
正确的Content-Type格式应该为:“multipart/form-databoundary=<calculated when request is sent>”
设置Camel Body的时候需要一起设置header,最终发送请求的header格式类似:
上面的Content-Type是postman内置的,下面的是手动加上的。
实验:
1)两者都勾选,上传成功
2)只勾选手动添加的Content-Type,上传失败,错误同上
3)只勾选内置的Content-Type,上传成功
这是我第9篇。
你们在使用Postman时,搞清楚下面这几个是干啥的吗
接下来介绍4个常用的类型。
上图的 form-data 就是指的 multipart/form-data
这是一个多部分多媒体类型,它是一个常见的 POST 数据提交的方式,它会生成了一个 boundary 用于分割不同的字段。它会将表单的数据处理为一条消息,以标签为单元,用分隔符分开。 既可以上传键值对,也可以上传文件。 当上传的字段是文件时,会有Content-Type来说明文件类型。
注意,当使用表单上传文件时,必须让 form 的 enctype 等于这个值。
上图的 x-www-form-urlencoded 就是指的 application/x-www-form-urlencoded
一般用于 表单提交 ,会将请求参数用 key1=val1&key2=val2 的方式进行组织和编码,key 和 val 都进行了 URL 转码,并放到请求实体里面(注意如果是中文或特殊字符如"/"、","、“:" 等会自动进行URL转码)。
最常用的。使用这个类型,提交的是序列化后的 JSON 字符串,服务端/客户端会按json格式解析数据
即传递XML格式,在以前比较常用,不接触老的项目应该用不到。
上图 binary 指的是 application/octet-stream 。
Content-Type为 application/octet-stream 时,只可上传二进制数据,通常用来上传文件,没有键值,一次只能上传一个文件。
使用 postman 测试文件上传接口,文件上传请求头部参数是 content-type: multipart/form-data 类型
新建一个request请求,选post请求方式,输入接口地址
请求headers参数可以不用填,请求body选 form-data 类型, 输入参数名称,文件选 file 类型
点Select files 选择一个本地文件
输入其它请求参数
点 send 按钮执行
运行结果
浏览器访问 /media/21.png 拼接前面ip和端口就可以访问服务器刚才上传的图片了
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)