我正在尝试通过 JAX-RPC java 客户端访问 XML 响应。
我一直在研究 Axis 自定义处理程序,但看起来它们仅在服务端有用。
最佳答案
这里有一些代码可以返回 XML 响应负载。您可以直接从 AXIS Stub 类获取它,也可以从将其写入 MessageContext 的处理程序获取它。这是直接读取的:
private String getSOAPResponseXML(Object clientstub) {
String returnValue = null;
org.apache.axis.client.Stub stub = (org.apache.axis.client.Stub)clientstub;
Call call = stub._getCall();
if (call != null) {
MessageContext ctx = call.getMessageContext();
// If I registered a handler
// returnValue = (String) ctx.getProperty( ClientHandler.SOAP_RESPONSE );
// or use:
try {
Message msg = call.getResponseMessage();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
// NOTE: If we never get a response (a request handler throws an uncaught error
// this can cause a java.lang.NullPointerException
msg.writeTo(baos);
returnValue = baos.toString();
} catch (java.io.IOException ex) {
log.debug("Error in getSOAPResponseXML", ex);
} catch (javax.xml.soap.SOAPException ex) {
log.debug("Error in getSOAPResponseXML", ex);
}
}
return returnValue;
} // getSOAPResponseXML
如果您需要处理程序,请告诉我。
关于java - 是否可以在 JAX-RPC java 客户端中访问原始 SOA/XML 消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3842900/