【问题标题】:How to send restRequest in Patch mode?如何在 Patch 模式下发送 restRequest?
【发布时间】:2021-01-27 16:19:56
【问题描述】:

我正在与 Postman 合作,我发现它有多种模式。我能够实现一个“知道”如何在 Post 或 Get 方法中发送请求的 restRequest 对象。

这是我的代码的一部分:

 @Override
public RestResponse sendRequest() {
    return data.accept(new RequestDataVisitor<RestResponse>() {
        @Override
        public RestResponse visit(GetData getData) {
            return new RestResponse(webTarget.request().headers(headers).get());
        }

        @Override
        public RestResponse visit(PostFormData post) {
            return new RestResponse(webTarget.request(post.getMediaType()).headers(headers).post(post.getEntity()));
        }

        @Override
        public RestResponse visit(PostRawData post) {
            return new RestResponse(webTarget.request(post.getMediaType()).headers(headers).post(post.getEntity()));
        }

        @Override
        public RestResponse visit(DeleteData deleteData) {
            return new RestResponse(webTarget.request(deleteData.getMediaType()).headers(headers).delete());

        }
    });
}

如何让我的 webTarget 在 Patch 模式下发送请求?

【问题讨论】:

    标签: java http postman


    【解决方案1】:

    问题出在 WebTarget 对象中:

    WebTarget target = client.target(baseUrl).path(resourcePath)
    .property(HttpUrlConnectorProvider.SET_METHOD_WORKAROUND,"true");
    

    PATCH 方法仅在 SET_METHOD_WORKAROUND 为 true 时有效。

    【讨论】:

      【解决方案2】:

      您可以使用method 方法并将第一个参数设置为“PATCH”。

      method 是一种通用方法(与 postgetdelete 不同,它们具有硬连线的 http 方法),并允许您调用任意方法:

      webTarget.request(mediaType).headers(headers).method("PATCH", entity);
      

      有关更多详细信息,请参阅文档:WebTarget.request 为您提供了一个 Invocation.Builder 的实例,该实例继承自 SyncInvokermethod

      注意:根据您使用的 JDK 版本和 JAX-RS 库,调用 PATCH 方法时可能会遇到问题。如果你这样做了,看看这些是否有帮助:

      【讨论】:

      • 您能否提供完整的答案?每次使用您的代码时都会收到异常。
      猜你喜欢
      • 1970-01-01
      • 2015-08-07
      • 1970-01-01
      • 1970-01-01
      • 2021-12-16
      • 1970-01-01
      • 2020-02-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多