有什么方法可以在没有二进制/附件的情况下对soap请求强制MTOM/XOP格式?

问题描述

我有一个奇怪的请求,我无法弄清楚。我需要以 MTOM/XOP 编码发送请求,即使没有附件也没有二进制数据。这是检索附件的请求,ITI 规范也要求该请求采用 MTOM/XOP。如果包含二进制数据,我知道如何发送 MTOM 请求,但无法弄清楚在没有附件时如何“强制”MTOM。我能想到的唯一“解决方案”是添加一个“虚拟”附件 - 但讨厌这个想法。有关规范的详细信息,请参见下文。

来自 IHE ITI 技术框架 2010:

3.39.5 协议要求【这是 XCA 检索】 ihe:RetrieveDocumentSetRequest/ 元素在 ITI TF-2b: 3.43.5 中定义。在 Cross Gateway Retrieve 中使用时,需要 ihe:HomeCommunityId/ 元素。 ihe:RetrieveDocumentSetResponse/ 元素在 ITI TF-2b: 3.43.5 中定义。

3.43.5 协议要求 此交易的实施者应遵守 ITI TF-2x:附录 V:IHE 交易的 Web 服务中描述的所有要求。 检索文档集事务应使用带有 XOP 编码的 SOAP12 和 MTOM(在本规范中标记为 MTOM/XOP)。有关详细信息,请参阅 ITI TF-2x:附录 V。文件库应: • 接受 MTOM/XOP 格式的检索文档集请求消息。 • 生成 MTOM/XOP 格式的检索文档集响应消息 文件消费者应: • 生成 MTOM/XOP 格式的检索文档集请求消息。 • 接受 MTOM/XOP 格式的检索文档集响应消息。

后来的规格…2019 版本也保持一致…..

3.39.5 3.43.5

编辑:

即使请求没有二进制数据或附件,他们仍然希望它以“多部分”(MTOM/XOP)格式发送。 这是我发现的一个不相关的样本:

请求:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.kb.com/">
   <soapenv:Header/>
   <soapenv:Body>
      <ws:downloadImage>
         <arg0>logo.jpg</arg0>
      </ws:downloadImage>
   </soapenv:Body>
</soapenv:Envelope>

他们希望如何发送:

Content-Type: Multipart/Related; start-info="text/xml"; type="application/xop+xml"; boundary="----=_Part_0_1744155.1118953559416"
Content-Length: 3453
SOAPAction: "some-SOAP-action"

------=_Part_1_4558657.1118953559446
Content-Type: application/xop+xml; type="text/xml"; charset=utf-8

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.kb.com/">
   <soapenv:Header/>
   <soapenv:Body>
      <ws:downloadImage>
         <arg0>logo.jpg</arg0>
      </ws:downloadImage>
   </soapenv:Body>
</soapenv:Envelope>

------=_Part_1_4558657.1118953559446

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)