gpt4 book ai didi

java - 使用 AXIS2 创建的 ADB stub 在客户端获取原始 XML SOAP 响应

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:09:40 24 4
gpt4 key购买 nike

我使用由 AXIS2 创建的 ADB stub 访问 SOAP 服务。我想记录服务返回的任何 Axis Fault 的原始 XML 响应。我可以将这些错误捕获为“ServiceError”。但是,我找不到检索原始 XML 的方法(请参见下面的示例)。

我找到了一种访问原始 XML 请求/响应以进行常规处理的方法,使用 getOMElement(参见下面的示例)。但是,这不适用于故障。

如何使用 ADB stub 获取原始 XML 故障?

示例 Java 代码:

    public void testRequest(String URL) throws AxisFault {
MyServiceStub myservice = new MyServiceStub(URL);
MyRequest req = new MyRequest();
try {
TypeMyFunctionResponse response = myservice.myFunction(req);

// logging full soap response
System.out.println("SOAP Response: "
+ response.getOMElement(null,
OMAbstractFactory.getOMFactory())
.toStringWithConsume());
} catch (RemoteException e) {
//...
} catch (ServiceError e) {
// how to get the raw xml?
}
}

示例故障响应,我想获取并记录:

<?xml version='1.0' encoding='UTF-8'?>
<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope">
<soapenv:Body>
<soapenv:Fault>
<soapenv:Code>
<soapenv:Value>soapenv:Receiver</soapenv:Value>
</soapenv:Code>
<soapenv:Reason>
<soapenv:Text xml:lang="en-US">service error</soapenv:Text>
</soapenv:Reason>
<soapenv:Detail>
<ns1:error xmlns:ns1="http://www.somehost.com/webservices/someservice">
<ns1:code>500</ns1:code>
<ns1:messageText>some fault message</ns1:messageText>
</ns1:error>
</soapenv:Detail>
</soapenv:Fault>
</soapenv:Body>
</soapenv:Envelope>

最佳答案

下面是您可能正在寻找的内容,yourStub 是您通过 wsdl2java 生成的内容,并在您发出请求后使用以下行。消息设置为 lastOperation 并在您进行实际调用时发送:

request = yourStub._getServiceClient().getLastOperationContext().getMessageContext("Out")
.getEnvelope().toString());

response = yourStub._getServiceClient().getLastOperationContext().getMessageContext("In")
.getEnvelope().toString());

希望对您有所帮助。

关于java - 使用 AXIS2 创建的 ADB stub 在客户端获取原始 XML SOAP 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12175002/

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