所以我想知道我的Web服务的客户端的语言环境或IP等.我怎么得到它?
我的端点方法:
@POST
@Produces({MediaType.APPLICATION_JSON})
@Consumes({MediaType.APPLICATION_JSON})
@Path("/{EmployeeID}/Shifts/{ShiftID}/Confirm")
public Response confirmShift(@PathParam("EmployeeID")String employeeId, String params, @PathParam("ShiftID")String tbId);
Run Code Online (Sandbox Code Playgroud)
我如何在拦截器中得到它:
Map<String, List> headers = (Map<String, List>) message.get(Message.PROTOCOL_HEADERS);
Run Code Online (Sandbox Code Playgroud)
我认为协议标题必须包含此信息,我没有检查它的方式.但是我如何在Web服务中获取它.
注意:我想避免在cxf请求上下文中获取/设置内容.
您需要将MessageContext注入到包含HTTP servlet请求的方法中.
例如:
@POST
@Produces({MediaType.APPLICATION_JSON})
@Consumes({MediaType.APPLICATION_JSON})
@Path("/{EmployeeID}/Shifts/{ShiftID}/Confirm")
public Response confirmShift(@PathParam("EmployeeID") String employeeId,
String params,
@PathParam("ShiftID") String tbId,
@Context MessageContext context){
HttpServletRequest request = context.getHttpServletRequest();
String ip = request.getRemoteAddr();
/** ..... **/
}
Run Code Online (Sandbox Code Playgroud)
还有其他一些获取HTTP servlet请求的方法,一种是:
Message message = PhaseInterceptorChain.getCurrentMessage();
HttpServletRequest httpRequest = (HttpServletRequest) message.get(AbstractHTTPDestination.HTTP_REQUEST);
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助.
| 归档时间: |
|
| 查看次数: |
2297 次 |
| 最近记录: |