如何使用null实体通过Jersy REST客户端调用PUT

时间:2016-01-13 06:09:49

标签: rest jersey-2.0 jersey-client

我想打几个"升级" REST API通过Jersy客户端,声明为PUT并且不需要任何正文内容。

但是,当我按如下方式请求此API时:

Object

它给出了如下错误:

webTarget.request().put(Entity.json(null));

所以需要知道,在jersy客户端中是否有任何方法可以使用null Entity调用PUT方法。

3 个答案:

答案 0 :(得分:10)

您可以配置客户端属性

  

<强> SUPPRESS_HTTP_COMPLIANCE_VALIDATION

     

默认情况下,Jersey客户端运行时执行某些HTTP合规性检查(例如哪些HTTP方法可以促进非空请求实体等),以便在用户尝试建立不符合HTTP的通信时发生异常快速失败规格。需要覆盖这些合规性检查并避免Jersey客户端运行时出于某种原因抛出异常的用户可以将此属性设置为true。因此,合规性问题将仅在日志中报告,并且不会引发异常。

     

[...]

Client client = ClientBuilder.newClient();
client.property(ClientProperties.SUPPRESS_HTTP_COMPLIANCE_VALIDATION, true);
WebTarget target = client.target("...");
Response response = target.request().put(Entity.json(null));

答案 1 :(得分:5)

我遇到了同样的错误,并使用空文本实体解决了它:

Entity<?> empty = Entity.text("");
webTarget.request().put(empty);

答案 2 :(得分:0)

您可以使用webTarget.request().put(Entity.json(""));
它对我有用。