このチュートリアルでは、JAX-RSでHTTPリクエストヘッダを取得する2つの方法を示します。
-
`@ HeaderParam`で直接注入する
-
`@ Context`を介しての実用的
1. @HeaderParamの例
この例では、リクエストヘッダーからブラウザ " user-agent "を取得します。
import javax.ws.rs.GET; import javax.ws.rs.HeaderParam; import javax.ws.rs.Path; import javax.ws.rs.core.Response; @Path("/users") public class UserService { @GET @Path("/get") public Response addUser(@HeaderParam("user-agent") String userAgent) { return Response.status(200) .entity("addUser is called, userAgent : " + userAgent) .build(); } }
URIパターン " /users/get "経由でのアクセスは、FireFoxを使用して、次の結果を参照してください。
addUser is called, userAgent : Mozilla/5.0 (Windows NT 6.1; rv:5.0) Gecko/20100101 Firefox/5.0
2. @Contextの例
代わりに
@ Context`を使って
`javax.ws.rs.core.HttpHeaders`"を直接取得することもできます。同等のバージョンを参照してブラウザ "
user-agent
"を取得してください。
import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.core.Context; import javax.ws.rs.core.HttpHeaders; import javax.ws.rs.core.Response; @Path("/users") public class UserService { @GET @Path("/get") public Response addUser(@Context HttpHeaders headers) { String userAgent = headers.getRequestHeader("user-agent").get(0); return Response.status(200) .entity("addUser is called, userAgent : " + userAgent) .build(); } }
Google ChromeでURIパターン " /users/get "経由でアクセスすると、次の結果が表示されます。
addUser is called, userAgent : Mozilla/5.0 (Windows NT 6.1) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.112 Safari/534.30
-
すべてのリクエストヘッダを一覧表示する** 次のコードで利用可能なすべてのHTTPリクエストヘッダを一覧表示することができます:
for(String header : headers.getRequestHeaders().keySet()){ System.out.println(header); }
ソースコードをダウンロードする
それをダウンロードしてください://wp-content/uploads/2011/07/JAX-RS-Get-HTTP-Header-Example.zip[JAX-RS-Get-HTTP-Header-Example.zip](6 KB)
参考文献
HttpHeaders JavaDoc]。 http://jsr311.java.net/nonav/releases/1.1/javax/ws/rs/HeaderParam.html [JAX-RS
@HeaderParam JavaDoc]。 http://en.wikipedia.org/wiki/List of HTTP header fields[Fullリスト
HTTPヘッダーフィールド]