Using Jersey to read form data

2019-02-13 20:40发布

I'm developing a web app where i have a form like that

<form name="form" action="create-user" method="post">
   <input name="accept" type="checkbox"><span>{{acceptLegalTerms}}</span><br>
   <input type="submit" value="{{Continue}}" class="primary fright"/>
</form>

On the server side, We're using Jersey (on GAE). And here's what I'm trying to use to read the POST values

@POST
@Consumes(MediaType.MULTIPART_FORM_DATA)
@Path("create-user")
public Response createUser(@FormDataParam("accept") boolean acceptForm) {
   return Response.ok().entity(acceptForm).build();
}

But it doesn't work... It returns me...

HTTP ERROR 415

Problem accessing /login/create-user. Reason:

Unsupported Media Type

Any ideas? What Am I doing wrong?

Thanks!

2条回答
女痞
2楼-- · 2019-02-13 21:15

Just to keep it simple: in case it is the only request handler mapped to the specific URL (in that case "test") and with the specific HTTP method (POST), you can avoid the usage of @Consumes!

查看更多
成全新的幸福
3楼-- · 2019-02-13 21:19

try this:

@Path("test")
@POST
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public String testForm(@FormParam("accept") String accept) {
    return accept;
}

Multipart is something slightly different, see jersey sample multipart-webapp or see http://www.w3.org/Protocols/rfc1341/7_2_Multipart.html. Your web form is not producing it, so Jersey correctly returns 415 - Unsupported media type, because you don't have any resource which is handling "application/x-www-form-urlencoded" media type.

查看更多
登录 后发表回答