首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java中的cURL删除

Java中的cURL删除
EN

Stack Overflow用户
提问于 2014-07-14 20:22:38
回答 2查看 1.5K关注 0票数 2

正如标题所述,我试图用DELETE 编写以下curl 命令。

代码语言:javascript
复制
curl -X DELETE -H "Content-Type: application/json; charset=UTF-8" http://10.84.14.2:8082/virtual-network/47a91732-629b-4cbe-9aa5-45ba4d7b0e99

我的理解是,您必须在一个DELETE中格式化POST请求。下面是我的GET调用的工作代码。

代码语言:javascript
复制
URL dc0ContrailUrl2 = new URL("http://10.10.10.120:8082/network-policy/363bf699-6417-486e-9791-d5aaf873d9bb");
    URLConnection dcConn2 = dc0ContrailUrl2.openConnection();
    dcConn2.setRequestProperty("Content-Type", "application/json");
    BufferedReader in2 = newBufferedReader(newInputStreamReader(dcConn2.getInputStream()));

    String inputLine2;

while ((inputLine2 = in2.readLine()) != null){ //while response is not null, assign response to inputLine and print inputLine
        System.out.println(inputLine2); 
}
        in2.close();

当我环顾四周寻找如何处理DELETE请求时,我得到了以下结果:

代码语言:javascript
复制
URL url3 = new URL("http://10.10.10.120:8082/network-policy/363bf699-6417-486e-9791-d5aaf873d9bb");
        HttpURLConnection httpConnection3 = (HttpURLConnection) url3.openConnection();
        httpConnection3.setDoOutput(true);
        httpConnection3.setRequestProperty("Content-Type", "application/json" );
        httpConnection3.setRequestMethod("DELETE");

在这一点上,我已经深入谷歌的兔子洞,我确信解决方案非常简单,只是一个改变一些语法/方法调用的问题。任何帮助都是非常感谢的。

注意:--我可以通过简单地输入URL http://10.10.10.120:8082/network-policy/363bf699-6417-486e-9791-d5aaf873d9bb并将下拉菜单切换到DELETE来使用Postman(铬应用程序)来让DELETE调用工作,所以我知道我的URL不是问题所在。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-07-14 20:46:12

不要直接使用HttpURLConnection,而是尝试使用类似于Apache HttpComponents中的HttpClient这样的库,这是如何在delete命令中使用它的一个例子:

代码语言:javascript
复制
void sendDelete() throws IOException {
    CloseableHttpClient httpclient = HttpClients.createDefault();

    // create DELETE REQUEST
    HttpDelete httpDelete = new HttpDelete(
        "http://10.84.14.2:8082/virtual-network/47a91732-629b-4cbe-9aa5-45ba4d7b0e99");

    // add header "content-type"
    httpDelete.addHeader(new BasicHeader("Content-Type", "application/json; charset=UTF-8"));

    // send request
    CloseableHttpResponse response1 = httpclient.execute(httpDelete);

    // close response (ideally inside a finally clause in a try/catch)
    response1.close();

}
票数 3
EN

Stack Overflow用户

发布于 2014-07-14 20:52:52

我的理解是,您必须在一个DELETE中格式化POST请求。

这是不正确的。您发布的Curl命令执行' DELETE‘请求,从这个意义上讲,POST和DELETE(和GET)是另一种HTTP请求“方法”。有些web服务可能以POST和/或GET请求的形式接受某种类型的删除命令,但Curl并不是这样做的。(这也不是邮递员在选择“删除”请求方法时所做的事情。)

您的代码实际上是正确的。指定要进行输出(因为没有)是没有用的,因此也没有指定内容类型(因为请求没有内容),但是这样做可能没有什么害处。您甚至可以在连接上使用setDoInput(false),因为通常您不会期望服务器在其响应中发送任何内容,但是将其排除在外也是可以的。

您缺少的主要内容是调用连接的connect()方法。在"GET“示例中不需要这样做,因为读取连接的输入流会使其自动连接。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24745271

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档