2

I want introduce two String params (type and content) in the method "createPost".

I am using this line:

curl -i -u pepe:pepe -d 'type=Link&content=www' --header "Content-Type: application/json"  http://localhost:8080/web-0.0.1-SNAPSHOT/api/user/post

But... that line introduces "type=Link&content=www" in the first parameter and leaves the second empty.

The method is this:

@POST
@Path("/post")
@Consumes(MediaType.APPLICATION_JSON)
public Response createPost(@FormParam("type") String type,  @FormParam("content") String content) { 
    postEJB.createPostUserRest(type, content);
    URI userURI = uriInfo.getAbsolutePathBuilder().build();
    return Response.created(userURI).build();
}

How could I enter "Link" in the first and "www" in the second?

Many thanks to all and sorry for my poor English.

1 Answer 1

4

There are a couple of issues here:

  • To make sure that curl sends a POST request, use -X POST
  • The method createPost expects MediaType.APPLICATION_JSON, which is not compatible with the -d option of curl. (Also, if I remember correctly, it's quite tricky to get things working with this media type, though certainly possible.). I suggest to use MediaType.APPLICATION_FORM_URLENCODED instead, which is compatible with -d of curl, and easier to get things working.
  • To pass multiple form parameters, you can use multiple -d options

To sum it up, change the Java code to this:

@POST
@Path("/post")
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public Response createPost(@FormParam("type") String type,  @FormParam("content") String content) { 
    postEJB.createPostUserRest(type, content);
    URI userURI = uriInfo.getAbsolutePathBuilder().build();
    return Response.created(userURI).build();
}

And the curl request to this:

curl -X POST -d type=Link -d content=www -i -u pepe:pepe http://localhost:8080/web-0.0.1-SNAPSHOT/api/user/post

Note that I dropped the Content-Type: application/json header. The default is application/x-www-form-urlencoded, also implied by the way -d works, and required by the way we changed the Java code above.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.