JAX-RSでHTTPヘッダを取得する

このチュートリアルでは、JAX-RSでHTTPリクエストヘッダを取得する2つの方法を示します。

  1. `@ H​​eaderParam`で直接注入する

  2. `@ 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)

参考文献

@HeaderParam JavaDoc]。 http://en.wikipedia.org/wiki/List of HTTP header fields[Fullリスト

HTTPヘッダーフィールド]