gpt4 book ai didi

java - 如何从文件中的原始 xml 负载中解码 SoapFault?

转载 作者:行者123 更新时间:2023-12-01 09:43:53 24 4
gpt4 key购买 nike

假设我的文件中有以下 xml 负载

<?xml version="1.0" encoding="UTF-8"?>
<ns2:Fault
xmlns:ns2="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:ns3="http://www.w3.org/2003/05/soap-envelope">
<faultcode>ns2:Server</faultcode>
<faultstring>some Error</faultstring>
<detail>
<ns4:ApplicationSOAPFault xmlns:ns4="http://application.exception">
<code>04</code>
<message>SimiError</message>
</ns4:ApplicationSOAPFault>
</detail>
</ns2:Fault>

如何将其解码到 SoapFault(以及 CheckedException,如果可用)并将其作为异常抛出?

背景

我们正在尝试构建一个模拟器,在记录/代理模式下使用 LogicalHandler 将 WebService 请求和响应负载 xml 转储到文件系统。(即在对目标服务器进行 Web 服务调用并获取有效响应之后)

如果目标服务器返回 Soap 错误,则像上面这样的 SoapFault 会转储到文件系统。

当模拟器切换到播放模式时,从转储中解码的匹配响应将返回到服务器(使用 JAXB.unmarshall() 完成)

这工作正常,但是模拟器当前无法解码 SoapFault (和相应的 CheckedException )并将其作为异常抛出。

最佳答案

请尝试一下,

   final SOAPMessage msg = MessageFactory.newInstance(SOAPConstants.SOAP_1_2_PROTOCOL)
.createMessage(new MimeHeaders(), new ByteArrayInputStream(yourSoapMessageWithFault.getBytes()));
if (msg != null) {
SOAPEnvelope env = msg.getSOAPPart().getEnvelope();
SOAPBody body = env.getBody();
if (body != null && body.hasFault()) {
final SOAPFault fault = body.getFault();
final DetailEntry entry = (DetailEntry)fault.getDetail().getDetailEntries().next();
//now UNMarshall this entry to your custom exception class.

}

关于java - 如何从文件中的原始 xml 负载中解码 SoapFault?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38228254/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com