You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JMeter自定义SoapSampler添加附件报错:Manifest未被识别

这个错误的核心问题其实和你用的SOAP版本以及附件处理方式不匹配有关,咱们一步步拆解解决:

问题根源分析

你用的是SOAP 1.1,但却用了XOP(<xop:Include>)来引用附件——要知道XOP/MTOM是SOAP 1.2才原生支持的扩展规范,SOAP 1.1本身并没有这个机制。另外错误里提到的Manifest未被识别,说明服务端期望你的请求包含ebXML消息头里的Manifest元素,而你的当前请求要么缺了这个元素,要么格式不对。

具体解决方案

1. 放弃XOP引用,改用SOAP 1.1兼容的MIME多部分附件方式

SOAP 1.1带附件的标准做法是用multipart/related类型的MIME消息,把SOAP信封和附件作为不同的部分发送,然后在SOAP体里用cid:直接引用附件的Content-ID。

2. 修正JMeter Custom Soap Sampler的配置

  • 附件Content-Type:不要设为resource,换成你附件实际的MIME类型(比如application/pdf、image/jpeg、application/octet-stream等),resource不是标准MIME类型,服务端无法识别。
  • Content-ID格式:确保附件的Content-ID设置为<ref1>(带尖括号),而SOAP信封里引用时用cid:ref1(不带尖括号)——这是MIME规范的要求。
  • 消息头设置:在Sampler里确保请求的Content-Type头是multipart/related; boundary="自定义边界字符串"; type="text/xml",JMeter通常会自动处理边界,但你可以手动确认。

3. 补充ebXML Manifest元素

根据错误提示,服务端要求你的SOAP头里包含{http://www.ebxml.org/namespaces/messageHeader}Manifest元素,你需要对照服务端的WSDL,把这个元素正确添加到SOAP的<Header>部分。比如:

<SOAP-ENV:Header>
  <eb:Manifest xmlns:eb="http://www.ebxml.org/namespaces/messageHeader">
    <!-- 这里按照WSDL要求填写Manifest的内容,比如附件的描述、类型等 -->
    <eb:Reference href="cid:ref1">
      <eb:Description>附件描述</eb:Description>
    </eb:Reference>
  </eb:Manifest>
</SOAP-ENV:Header>

4. 验证请求结构

你可以用JMeter的“查看结果树”组件,切换到“Raw”标签,检查发送的请求是否符合multipart/related的格式,比如:

Content-Type: multipart/related; boundary="JMETER_MIME_BOUNDARY"; type="text/xml"

--JMETER_MIME_BOUNDARY
Content-Type: text/xml; charset=UTF-8

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
  <SOAP-ENV:Header>
    <eb:Manifest xmlns:eb="http://www.ebxml.org/namespaces/messageHeader">
      <eb:Reference href="cid:ref1"/>
    </eb:Manifest>
  </SOAP-ENV:Header>
  <SOAP-ENV:Body>
    <data>cid:ref1</data>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

--JMETER_MIME_BOUNDARY
Content-Type: application/pdf
Content-ID: <ref1>
Content-Transfer-Encoding: binary

[附件的二进制内容]
--JMETER_MIME_BOUNDARY--
额外建议

如果还是有问题,可以先用SoapUI根据服务端的WSDL生成一个带附件的SOAP 1.1请求,测试通过后,对比它的请求结构和JMeter发送的请求,找出差异点——这通常能快速定位配置错误。

内容的提问来源于stack exchange,提问作者plaidshirt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:21:30