I've got an app that's basically a proxy to a service. The app itself is built on Jersey and served by Jetty. I have this Resource method:
@POST
@Path("/{default: .*}")
@Timed
@Consumes("application/x-www-form-urlencoded")
public MyView post(@Context UriInfo uriInfo, @Context HttpServletRequest request) {
...
}
A user submits a POST form. All POST requests go through this method. The UriInfo and HttpServletRequest are injected appropriately except for one detail: there seem to be no parameters. Here is my request being sent from the terminal:
POST /some/endpoint HTTP/1.1
Accept: */*
Accept-Encoding: gzip, deflate
Connection: keep-alive
Content-Length: 15
Content-Type: application/x-www-form-urlencoded; charset=utf-8
Host: localhost:8010
User-Agent: HTTPie/0.9.2
foo=bar&biz=baz
Here the POST body clearly contains 2 parameters: foo and biz. But when I try to get them in my code (request.getParameterMap
) the result is a map of size 0.
How do I access these parameters or this parameter string from inside my resource method? If it matters, the implementation of HttpServletRequest
that is used is org.eclipse.jetty.server.Request.
Three options
@FormParam("<param-name>")
to gt individual params. Ex.Use a
MultivaluedMap
to get all the paramsUse
Form
to get all the params.Use a
@BeanParam
along with individual@FormParam
s to get all the individual params inside a bean.