最近在給對接方寫webservice接口,提供的接口需要把header里面的參數取出然后在返回的信息中添加header參數,所以這就需要我們從header中獲取參數,在webservice中header的值可以有很多用途,有些程序可能會用來驗證身份信息,或者做一些校驗,返回給客戶端的header一半也是用於做校驗等,下面就介紹獲取請求的header並封裝返回header參數的方法。
我搭建的項目使用的cxf,所以我們可以使用AbstractPhaseInterceptor來繼承這個抽象類來自定義我們的攔截器,首先我們看到AbstractPhaseInterceptor已經有很多實現類,例如日志攔截器。
cxf攔截器主要分為兩類,一種是處理請求的攔截器InInterceptor,另一種是處理返回的攔截器OutInterceptor,這個從哪里能看到呢,在我們的法布類上可以看到EndpointImpl有這樣兩個方法
首先我們先創建請求的攔截器
這里會重寫兩個方法,第一個設置執行的時機,第二個攔截內容做對應邏輯操作Phase.PRE_PROTOCOL是攔截器執行的時機,PRE_PROTOCOL就是在協議處理階段攔截內容,后面返回的攔截器也是一樣,就不介紹了,具體可以看代碼都有那些
獲取到你需要的header里的內容之后,根據你的業務做你對應的業務處理,比如驗證信息,我這里就是將獲取的值在添加到header中返回給客戶端,所以我放到了線程中。下一步我們創建返回的攔截器:
最后需要把創建的攔截器添加進來
注意我們創建的攔截器只有添加進來才會執行