我有一个SOAPHandler。我需要捕获响应请求
public class SOAPLoggingHandler implements SOAPHandler<SOAPMessageContext> {
@Override
public boolean handleFault(SOAPMessageContext context) {
writeMessageLogging(context);
return true;
}
public boolean handleMessage(SOAPMessageContext context) {
writeMessageLogging(context);
return true;
}
private void writeMessageLogging(SOAPMessageContext smc) {
Boolean outboundProperty = (Boolean) smc
.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY);
if (logger.isDebugEnabled()) {
if (outboundProperty.booleanValue()) {
logger.debug("Request message");
} else {
logger.debug("Response message:");
}
}
SOAPMessage message = smc.getMessage();
ByteArrayOutputStream out=null;
try {
if (!outboundProperty.booleanValue()) {
String requestXML="Request of the Response, is possible?";
}
out = new ByteArrayOutputStream();
message.writeTo(out);
String strMsg = new String(out.toByteArray());
logger.debug("strMsg:" + strMsg);
out.close();
} catch (Exception e) {
logger.error("Exception in handler:", e);
}finally{
IOUtils.closeQuietly(out);
}
}
}
请参阅:
字符串requestXML =“响应的请求是否可能?”;
是否可以在响应句柄中捕获请求?
答案 0 :(得分:1)
我终于解决了我的问题:
public class SOAPLoggingHandler implements SOAPHandler {
private static Logger logger = Logger.getLogger(SOAPLoggingHandler.class
.getCanonicalName());
public static final String REQUEST_XML="REQUEST_XML";
@Override
public boolean handleFault(SOAPMessageContext context) {
writeMessageLogging(context);
return true;
}
@Override
public boolean handleMessage(SOAPMessageContext context) {
writeMessageLogging(context);
return true;
}
private void writeMessageLogging(SOAPMessageContext smc) {
Boolean outboundProperty = (Boolean) smc
.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY);
SOAPMessage message = smc.getMessage();
ByteArrayOutputStream out=null;
try {
out = new ByteArrayOutputStream();
message.writeTo(out);
String strMsg = new String(out.toByteArray());
if (!outboundProperty.booleanValue()) {
String requestXML=(String)smc.get(REQUEST_XML);
logger.debug("Request of Response:"+requestXML);
}else{
smc.put(REQUEST_XML,strMsg);
}
logger.debug("strMsg:" + strMsg);
out.close();
} catch (Exception e) {
logger.error("Exception in handler:", e);
}finally{
IOUtils.closeQuietly(out);
}
}
}
我使用SOAPMessageContext。