在本教程中,我们向您展示了两种在JAX-RS中获取HTTP请求标头的方法:
- 直接使用
@HeaderParam
注入 - 实用地通过
@Context
注意
请参阅此Wiki页面以获取HTTP标头字段的列表 。
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();
}
}
使用FireFox通过URI模式“ / users / get ”访问,请参见以下结果:
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); }
下载源代码
下载它– JAX-RS-Get-HTTP-Header-Example.zip (6 KB)
参考文献
翻译自: https://mkyong.com/webservices/jax-rs/get-http-header-in-jax-rs/