我想打几个"升级" REST API通过Jersy客户端,声明为PUT并且不需要任何正文内容。
但是,当我按如下方式请求此API时:
Object
它给出了如下错误:
webTarget.request().put(Entity.json(null));
所以需要知道,在jersy客户端中是否有任何方法可以使用null Entity调用PUT方法。
答案 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(""));
它对我有用。