2011-05-27 68 views
2

我有在Tomcat 6,运行的球衣休息web服务我有消耗多部分一@Post方法:Java的球衣号码:获取客户端IP的休息方法Tomcat上

@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规范...

有没有另一种方法可以做到这一点?

+0

我没有在api中看到直接的方式,但你有没有尝试过getHeaders()。即。 。multiPart.getBodyParts()得到(0).getHeaders();然后搜索IP /主机的标题列表 – Sean 2011-05-27 14:04:47

回答

3

我发现你可以在Get方法中使用@Context HttpServletRequest。但在post方法中,我需要多部分输入参数。

我不认为这两者是相互排斥的。让你的方法有两个参数(我不认为它们的顺序很重要),并用@Context注解其中的一个。我相信无论是获取,发布还是其他任何东西都可以工作。你也可以用@Context注释一个字段,泽西将在你调用你的@GET方法之前为你初始化它。

+0

我在周末期间尝试了这一点,然后我看到了你的错误,我认为这实际上可行,但我需要更多测试。但是,谢谢:> – 2011-05-30 15:33:35

+0

我试图在Get方法中使用'@Context HttpServletRequest',但得到'Type mismatch:can not convert from Context to Annotation' error。为什么? – Greenhand 2013-09-20 13:00:08