最近在给对接方写webservice接口,提供的接口需要把header里面的参数取出然后在返回的信息中添加header参数,所以这就需要我们从header中获取参数,在webservice中header的值可以有很多用途,有些程序可能会用来验证身份信息,或者做一些校验,返回给客户端的header一半也是用于做校验等,下面就介绍获取请求的header并封装返回header参数的方法。
我搭建的项目使用的cxf,所以我们可以使用AbstractPhaseInterceptor来继承这个抽象类来自定义我们的拦截器,首先我们看到AbstractPhaseInterceptor已经有很多实现类,例如日志拦截器。
cxf拦截器主要分为两类,一种是处理请求的拦截器InInterceptor,另一种是处理返回的拦截器OutInterceptor,这个从哪里能看到呢,在我们的法布类上可以看到EndpointImpl有这样两个方法
首先我们先创建请求的拦截器
这里会重写两个方法,第一个设置执行的时机,第二个拦截内容做对应逻辑操作Phase.PRE_PROTOCOL是拦截器执行的时机,PRE_PROTOCOL就是在协议处理阶段拦截内容,后面返回的拦截器也是一样,就不介绍了,具体可以看代码都有那些
获取到你需要的header里的内容之后,根据你的业务做你对应的业务处理,比如验证信息,我这里就是将获取的值在添加到header中返回给客户端,所以我放到了线程中。下一步我们创建返回的拦截器:
最后需要把创建的拦截器添加进来
注意我们创建的拦截器只有添加进来才会执行