WireMock中的SOAP附件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WireMock中的SOAP附件相关的知识,希望对你有一定的参考价值。
我正在使用WireMock来模拟SOAP服务。
它工作得很好,但其中一个服务包含一个附件。有没有办法用WireMock嘲笑它?
谢谢
答案
是的,这是可能的。首先,您可以使用SOAP ui来模拟您对附件所期望的响应。 [在soap资源上,右键单击:生成SOAP模拟服务]在创建的模拟中,在响应中您应该看到对应于wsld的虚拟主体。在那里你可以点击附件并添加一个文件:你运行这个模拟并尝试用肥皂请求手动点击它,然后应该出现在请求部分。
它将为您生成附件的响应。您可以看到原始部件看起来像这样:
Content-Type: multipart/related; type="application/xop+xml"; start="<rootpart@soapui.org>"; start-info="text/xml"; boundary="----=_Part_19_678369072.1513344309074",
MIME-Version: 1.0
------=_Part_19_678369072.1513344309074
Content-Type: application/xop+xml; charset=UTF-8; type="text/xml"
Content-Transfer-Encoding: 8bit
Content-ID: <rootpart@soapui.org>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<ns2:getFileResponse xmlns:ns3="urn:eu:europa:ec:etrustex:integration:service:notification:v2.0" xmlns:ns2="urn:eu:europa:ec:etrustex:integration:service:filerepository:v2.0" xmlns="urn:eu:europa:ec:etrustex:integration:model:common:v2.0">
<ns2:fileWrapper>
<Content><inc:Include href="cid:test.txt" xmlns:inc="http://www.w3.org/2004/08/xop/include"/></Content>
</ns2:fileWrapper>
</ns2:getFileResponse>
</S:Body>
</S:Envelope>
------=_Part_19_678369072.1513344309074
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-ID: <test.txt>
Content-Disposition: attachment; name="test.txt"
TEST
------=_Part_19_678369072.1513344309074--
现在,您可以使用以下内容设置wiremock:
{
"request": {
"method": "POST",
"urlPattern": "/mockFileRepository"
},
"response": {
"status": 200,
"bodyFileName": "responseTest.raw",
"headers": {
"Content-Type": "multipart/related; type="application/xop+xml"; start="<rootpart@soapui.org>"; start-info="text/xml"; boundary="----=_Part_19_678369072.1513344309074"",
"MIME-Version": "1.0"
}
}
}
注意标题内容类型应该与您从soap ui获得的原始部分相同。
responseTest.raw看起来像这样:
------=_Part_19_678369072.1513344309074
Content-Type: application/xop+xml; charset=UTF-8; type="text/xml"
Content-Transfer-Encoding: 8bit
Content-ID: <rootpart@soapui.org>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<ns2:getFileResponse xmlns:ns3="urn:eu:europa:ec:etrustex:integration:service:notification:v2.0" xmlns:ns2="urn:eu:europa:ec:etrustex:integration:service:filerepository:v2.0" xmlns="urn:eu:europa:ec:etrustex:integration:model:common:v2.0">
<ns2:fileWrapper>
<Content><inc:Include href="cid:test.txt" xmlns:inc="http://www.w3.org/2004/08/xop/include"/></Content>
</ns2:fileWrapper>
</ns2:getFileResponse>
</S:Body>
</S:Envelope>
------=_Part_19_678369072.1513344309074
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-ID: <test.txt>
Content-Disposition: attachment; name="test.txt"
TEST
------=_Part_19_678369072.1513344309074--
瞧!
以上是关于WireMock中的SOAP附件的主要内容,如果未能解决你的问题,请参考以下文章
在 Java 中将 WireMock 与 SOAP Web 服务一起使用
如何根据使用wiremock和JSON的请求正文匹配获得响应
在 WebSphere SOAP XOP 中,附件引用被替换为附件 base64 值