Karate框架发送带PDF附件的SOAP请求失败求助
Karate框架发送带PDF附件的SOAP请求解决方案
核心问题定位
SOAP带附件采用的是multipart/related MIME格式,而非普通表单提交的multipart/form-data,你之前的配置未匹配SOAP附件的标准结构,导致服务端无法识别。
正确配置示例
Given url "你的SOAP服务端点地址" # 显式设置请求的MIME类型为multipart/related,指定边界和SOAP主体类型 And header Content-Type = 'multipart/related; type="text/xml"; boundary="----=_Part_0_123456789.012345678"' # 添加SOAP信封作为第一个part And multipart part soapEnvelope = { content: read("soap-request.xml"), headers: { "Content-Type": "text/xml" } } # 添加PDF附件,严格匹配SoapUI中的header配置 And multipart file pdfAttachment = { read: "1.pdf", headers: { "Content-ID": "<2.pdf>", "Content-Type": "application/pdf", "Content-Disposition": "attachment; name=\"1.pdf\"; filename=\"1.pdf\"", "Content-Transfer-Encoding": "binary" } } When method post Then status 200
关键注意事项
- 请求头必须指定multipart/related:这是SOAP附件的标准格式,必须明确声明,否则服务端会按普通form-data处理,无法解析附件
- SOAP信封优先:必须将SOAP XML主体作为第一个multipart part发送,附件放在后续部分
- Header严格匹配:Content-ID要带
<>包裹,Content-Disposition中的name和filename要与SoapUI中的配置完全一致,避免服务端识别异常 - 文件路径校验:确保
1.pdf放在Karate能读取到的路径(项目根目录或当前feature文件所在目录)
内容的提问来源于stack exchange,提问作者olikster
相关产品推荐
相关产品推荐

