Java Jersey:在 Tomcat 上的 Rest 方法中获取客户端 IP
我有一个在 tomcat 6 上运行的 Jersey Rest Web 服务。我有一个使用 Multipart 的 @Post 方法:
@Path("identify")
@POST
@Consumes(MediaType.MULTIPART_FORM_DATA)
@Produces(MediaType.APPLICATION_XML)
public String identifyReception(com.sun.jersey.multipart.MultiPart multiPart) throws Exception {
我想在该方法中获取客户端 IP 地址。我发现您可以在 Get 方法中使用 @Context HttpServletRequest 。但在 post 方法中我需要多部分输入参数。我还发现tomcat不支持Servlet规范...
还有其他方法可以做到吗?
I have a Jersey rest webservice that runs on tomcat 6. I have a @Post method that consumes Multipart:
@Path("identify")
@POST
@Consumes(MediaType.MULTIPART_FORM_DATA)
@Produces(MediaType.APPLICATION_XML)
public String identifyReception(com.sun.jersey.multipart.MultiPart multiPart) throws Exception {
I would like to get the client IP address inside this method. I found out that you can use @Context HttpServletRequest inside Get method. But in post method I need the multipart input argument. I have also found out that tomcat does not support Servlet specification...
Is there another way I can do it?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我不认为两者是相互排斥的。让您的方法接受两个参数(我认为它们的顺序并不重要)并用
@Context
注释其中之一。我相信无论是获取、发布还是其他方式,这都会起作用。您也可以只使用@Context
注释字段,Jersey 会在调用您的 @GET 方法之前为您初始化它。I don't think the two are mutually exclusive. Let your method take two arguments (I don't think it matters what order they're in) and annotate one of them with
@Context
. I believe that will work whether it's a get, post, whatever. You could also just annotate a field with@Context
and Jersey will initialize it for you before it calls your @GET method.