问题描述
|
我正在与Axis合作构建SOAP客户端。我想在某处打印完整的http请求和响应。我设法创建了处理程序,该处理程序可以打印SOAP信封。如何扩展它以打印完整的http?
public class CustomMessageHandler extends GenericHandler {
HandlerInfo hi;
public void init(HandlerInfo info) {
hi = info;
System.out.println(\"CustomMessageHandler initialized\");
}
public QName[] getHeaders() {
return hi.getHeaders();
}
public boolean handleRequest(MessageContext context) {
try {
SOAPMessageContext smc = (SOAPMessageContext) context;
SOAPMessage msg = smc.getMessage();
System.out.println(\"request:\");
msg.writeto(System.out);
System.out.println(\"\");
} catch (Exception ex) {
ex.printstacktrace();
}
return true;
}
public boolean handleResponse(MessageContext context) {
try {
SOAPMessageContext smc = (SOAPMessageContext) context;
SOAPMessage msg = smc.getMessage();
System.out.println(\"response:\");
msg.writeto(System.out);
System.out.println(\"\");
} catch (Exception ex) {
ex.printstacktrace();
}
return true;
}
}
解决方法
在此阶段,请求和响应处理程序可能没有完整的请求和响应。 Axis Servlet可能会执行此操作或使用HTTP处理程序。
是否尝试编写过滤器并记录完整的请求和响应?