Question

How do I submit a post request with an empty body with a Jersey 2 client?

final MyClass result = ClientBuilder.newClient()
    .target("http://localhost:8080")
    .path("path")
    .queryParam("key", "value")
    .request(APPLICATION_JSON)
    .post(What to fill in here if the body should be left empty??, MyClass.class);

Update: this works:

final MyClass result = ClientBuilder
    .newBuilder().register(JacksonFeature).build()
    .target("http://localhost:8080")
    .path("path")
    .queryParam("key", "value")
    .request(APPLICATION_JSON)
    .post(null, MyClass.class);
Was it helpful?

Solution

I can't find this in the doc's anywhere, but I believe you can use null to get an empty body:

final MyClass result = ClientBuilder.newClient()
    .target("http://localhost:8080")
    .path("path")
    .queryParam("key", "value")
    .request(APPLICATION_JSON)
    .post(Entity.json(null), MyClass.class)

OTHER TIPS

I found that this worked for me:

Response r = client
    .target(url)
    .path(path)
    .queryParam(name, value)
    .request()
    .put(Entity.json(""));

Pass an empty string, not a null value.

I don't know if the version change it. But, the following doesn't work:

builder.put( Entity.json( null ) );

Where, the following works fine:

builder.put( Entity.json( "" ) );

Just post an empty txt.

   .post(Entity.text(""));

It worked for me only with an empty json object string

.post(Entity.json("{}")

All other solutions, still produced 400 Bad Request

P.S. The request is done using MediaType.APPLICATION_JSON

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top