gpt4 book ai didi

java - Apache CXF 中的 HTTPServletRequest 等价物

转载 作者:行者123 更新时间:2023-12-03 22:54:52 25 4
gpt4 key购买 nike

所以我想知道我的 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);

我如何在拦截器中获取它:

Map<String, List> headers = (Map<String, List>) message.get(Message.PROTOCOL_HEADERS);

我想protocol header一定有这个信息,顺便我没查过。但是我如何在 Web 服务中获取它。

注意:我想避免在 cxf 请求上下文中获取/设置内容。

最佳答案

你需要注入(inject)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();

/** ..... **/
}

还有一些其他方法可以获取 HTTP servlet 请求,一种是:

    Message message = PhaseInterceptorChain.getCurrentMessage();
HttpServletRequest httpRequest = (HttpServletRequest) message.get(AbstractHTTPDestination.HTTP_REQUEST);

希望这对您有所帮助。

关于java - Apache CXF 中的 HTTPServletRequest 等价物,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31872809/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com