休息WS @Post消耗HttpServletRequest不起作用

时间:2015-01-28 08:33:50

标签: web-services rest post cxf

这是我的cxf Rest WS:

@POST
@OPTIONS
@Path("/push")
@Produces({ MediaType.APPLICATION_JSON })
@Consumes({ MediaType.APPLICATION_FORM_URLENCODED })
public Response push(@FormParam(value="agentId") String agentId);

我将它用于表格:

<form id="form1" METHOD=POST ACTION="http://localhost:8080/uwv_interfacing-0.2.0-SNAPSHOT/api/rest/callHistory/push?AppKey=536f47d5-184f-3041-850c-bcad9f3afa49">
  <input type="hidden" name="agentId" value="ofize">
  <button type="submit" name="modifier" value="1">Submit</button>
</form>

我想获得一个HttpServletRequest而不是每个字段,但当我替换&#34; String agentId&#34;使用HttpServletRequest它是空的,我没有文件。 我试图替换&#34; @FormParam(值=&#34; agentId&#34;)&#34;用&#34; @ Context&#34;但我不确定使用的良好的anotation。 有什么想法吗?

2 个答案:

答案 0 :(得分:0)

您可以在课程中注入MessageContext,例如

import javax.ws.rs.core.Context;
import org.apache.cxf.jaxrs.ext.MessageContext;
...
@Context 
private MessageContext messageContext;
...
// in your restful method, you could do something like
HttpServletRequest httpServletRequest = messageContext.getHttpServletRequest();

答案 1 :(得分:0)

您可以使用@Context( qualified name: javax.ws.rs.core.Context)直接获取HttpServletRequest,因此您的代码应该如下所示。

@POST
@OPTIONS
@Path("/push")
@Produces({ MediaType.APPLICATION_JSON })
@Consumes({ MediaType.APPLICATION_FORM_URLENCODED })
public Response push(@FormParam(value="agentId") String agentId, final @Context HttpServletRequest request);