1

我想使用 HTTP DELETE 方法在下面发送此 JSON 消息。对于这个项目是需要使用 OAuth2 的。所以我使用依赖 google-oauth。Foreach HTTP 请求我使用依赖 google 客户端。

{
   "propertie" : true/false,
   "members" : [
      "String value is shown here"
   ]
}

在我的项目中,我使用了下面的代码,但我无法使用 HTTP DELETE 方法发送 JSON 消息。

Credential credential = new Credential(BearerToken.authorizationHeaderAccessMethod()).setAccessToken(accessToken);
JsonArray members = new JsonArray();
JsonPrimitive element = new JsonPrimitive("String value is shown here");
members.add(element);

JsonObject closeGroupchat = new JsonObject();
closeGroupchat.addProperty("propertie", false);
closeGroupchat.add("members", members);
Gson gson = new Gson();
HttpContent hc = new ByteArrayContent("application/json", gson.toJson(closeGroupchat).getBytes());

HttpRequestFactory requestFactory = httpTransport.createRequestFactory(credential);
HttpRequest httpreq = requestFactory.buildRequest(HttpMethods.DELETE, genericUrl, hc);
return httpreq.execute();

出现下一个错误:

java.lang.IllegalArgumentException:不支持内容长度非零的 DELETE

有人可以帮我解决这个问题吗?

4

1 回答 1

0

您的问题是您的 HTTP DELETE 请求包含一个不应包含的正文。删除资源时,需要提供要删除的 URL。HTTP 请求中的任何正文都将毫无意义,因为其目的是指示服务器删除特定 URL 处的资源。同样的事情也经常发生在 GET 请求中——一个 body 是没有意义的,因为你试图检索一个 body。

有关 HTTP DELETE 请求正文的详细信息,请参阅有关主题的 SO question。请注意,虽然 HTTP 规范在技术上可能允许请求正文,但根据您的错误消息,您的客户端库不允许它。

要解决此问题,请尝试为 传递一个nullhc,或者一个仅包装空 JSON 字符串的值(我的意思是使用"",而不是"{}")。

于 2018-01-19T13:53:59.323 回答