首页 > 解决方案 > 如何在 Java 中使用带有 okhttp3 的 PUT 请求?

问题描述

我对此很陌生,所以请善待。我正在尝试向某个端点发出 PUT 请求,在该端点中我需要发送某个布尔变量是真还是假。我在 Java 11 中使用 okhttp3。

final Request request = new Request.Builder()
        .url(someBaseURL + "/" + obj.getKey() + "/path")
        .build();
    execute(request);

到目前为止,这是我的代码,我需要使用以下 URL 调用端点:

“someBaseURL/obj.key/path?booleanVariable=true”

所以我的问题是我如何提出一个PUT添加这个值的请求,booleanVariable它的值为真或假。我尝试了一种非常愚蠢和简单的方法,只是将它添加"?booleanVariable=true"到,.url()但是那个请求只是一个GET,它对我不起作用。

标签: javaokhttpput

解决方案


如果您在正文中发送数据,那么您可以尝试以下代码:

MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\n\t\"first_param\":\"xxxxxx\"}");
Request request = new Request.Builder()
  .url("http://localhost:8080/api-path?booleanVariable=true")
  .put(body)
  .addHeader("Content-Type", "application/json")
  .build();

Response response = client.newCall(request).execute();

或者如果您只在参数中发送数据,那么您应该尝试下面的代码

MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\n\t\n}");
Request request = new Request.Builder()
  .url("http://localhost:8080/api-path?booleanVariable=true")
  .put(body)
  .addHeader("Content-Type", "application/json")
  .build();

Response response = client.newCall(request).execute();

推荐阅读