用泽西2客户端发布空体

时间:2013-12-14 16:05:09

标签: java jersey jersey-client

如何使用带有Jersey 2客户端的空体提交帖子请求?

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);

更新:这有效:

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

5 个答案:

答案 0 :(得分:22)

我无法在任何地方的文档中找到这个,但我相信你可以使用null来获得一个空洞的身体:

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

答案 1 :(得分:7)

我发现这对我有用:

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

传递空字符串,而不是空值。

答案 2 :(得分:5)

我不知道版本是否会改变它。但是,以下不起作用:

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

其中,以下工作正常:

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

答案 3 :(得分:3)

只需发布一个空的txt。

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

答案 4 :(得分:0)

它只对我有用:

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

所有其他解决方案,仍然产生400 Bad Request

P.S。请求使用MediaType.APPLICATION_JSON

完成