我有一个外部 API,它使用 DELETE 和正文(JSON)。我使用 Postman REST Client 并使用请求正文完成删除,并且工作正常。我正在尝试使用一种方法自动执行此功能。

我为类似的 GET、POST 和 PUT 尝试了 HttpURLConnection。但我不确定如何将 DELETE 与请求正文一起使用。

我已经检查了 StackOverflow 并看到这无法完成,但它们是非常旧的答案。

有人可以帮忙吗?我正在使用 Spring 框架。

最佳答案

我使用 org.apache.http 来完成这项工作。

@NotThreadSafe
class HttpDeleteWithBody extends HttpEntityEnclosingRequestBase {
    public static final String METHOD_NAME = "DELETE";

    public String getMethod() {
        return METHOD_NAME;
    }

    public HttpDeleteWithBody(final String uri) {
        super();
        setURI(URI.create(uri));
    }

    public HttpDeleteWithBody(final URI uri) {
        super();
        setURI(uri);
    }

    public HttpDeleteWithBody() {
        super();
    }
}



public String[] sendDelete(String URL, String PARAMS, String header) throws IOException {
    String[] restResponse = new String[2];
        CloseableHttpClient httpclient = HttpClients.createDefault();

        HttpDeleteWithBody httpDelete = new HttpDeleteWithBody(URL);
        StringEntity input = new StringEntity(PARAMS, ContentType.APPLICATION_JSON);
        httpDelete.addHeader("header", header);
        httpDelete.setEntity(input);

        Header requestHeaders[] = httpDelete.getAllHeaders();
        CloseableHttpResponse response = httpclient.execute(httpDelete);
        restResponse[0] = Integer.toString((response.getStatusLine().getStatusCode()));
        restResponse[1] = EntityUtils.toString(response.getEntity());
        return restResponse;
    }
}

关于带有请求正文的 Java HTTP DELETE,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43241436/

10-12 14:53