Java ClientInterceptor-捕获404场景
我正在使用ClientInterceptor截获应用程序发出的所有外部soap调用,并记录请求和响应。我能够捕获请求/响应和故障场景。但是,当我看到由于端点配置不正确而导致404错误时,我无法使用此接口提供的方法捕获该错误。有没有办法用这个接口捕获404错误?如果没有,你能帮助我知道我需要探索的替代方案吗 org.springframework.ws.client.support.interceptor.ClientInterceptorJava ClientInterceptor-捕获404场景,java,spring,spring-boot,Java,Spring,Spring Boot,我正在使用ClientInterceptor截获应用程序发出的所有外部soap调用,并记录请求和响应。我能够捕获请求/响应和故障场景。但是,当我看到由于端点配置不正确而导致404错误时,我无法使用此接口提供的方法捕获该错误。有没有办法用这个接口捕获404错误?如果没有,你能帮助我知道我需要探索的替代方案吗 org.springframework.ws.client.support.interceptor.ClientInterceptor org.springframework.ws.clien
org.springframework.ws.client.support.interceptor.ClientInterceptor.handleFault()
仅适用于拦截传入响应错误的进程。这就是规范定义的SOAP错误。因此,和规范定义了SOAP错误时返回的状态代码(例如,在请求消息信封中的XML格式错误的情况下)。SOAP 1.1为故障指定500状态代码,SOAP 1.2为发送方故障指定400状态代码,为所有其他故障指定500状态代码。如果出现故障,服务器将在包含SOAP故障元素的响应中返回SOAP消息,然后可以将该消息传递给ClientInterceptor.handleFault()
方法。但404状态代码表明这不是SOAP故障,而是系统错误。因此,如果您还需要处理这种情况,则需要覆盖WebServiceTemplate.handleError()
方法
这样就行了
public class CustomWebServiceTemplate extends WebServiceTemplate{
@Override
protected Object handleError(WebServiceConnection connection, WebServiceMessage request) throws IOException {
log.info("Log the error case in here");
return super.handleError(connection, request);
}
}
谢谢@Babl。有没有办法在handleError方法中获取MessageContext对象?我在MessageContext中设置了一些属性,作为handleRequest方法的一部分。如果我需要使用handleError方法处理超时响应,是否有办法访问messagecontext中的元素?不是简单的方法,我的意思是没有什么是不可能的,但是您需要覆盖
WebServiceTemplate.doSendAndReceive
以拥有完全自定义的内容。。。默认实现的问题在于,它只将请求发送到handleError
方法,如handleError(connection,messageContext.getRequest())代码>。因此,如果您真的需要它,您需要使用WebServiceTemplate.dosendReceive
Hey@Babl,只是一个更新-我能够在扩展clientinterceptor的类中的after complete方法中截获这些消息。非常感谢。