Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中运行curl命令无效_Java_Curl - Fatal编程技术网

在java中运行curl命令无效

在java中运行curl命令无效,java,curl,Java,Curl,我遵循这些教程,学习如何从Java运行curl,但它不起作用 curl命令(用于删除页面)在终端上运行良好,并以XML给出响应,但当我尝试使用java时,没有错误,没有XML,页面也保持不变 这就是我所尝试的: public class TryCurl { static String command = "curl -u username:password -X POST -F cmd=\"deletePage\" -F path=\"/cont

我遵循这些教程,学习如何从Java运行curl,但它不起作用

curl命令(用于删除页面)在终端上运行良好,并以XML给出响应,但当我尝试使用java时,没有错误,没有XML,页面也保持不变

这就是我所尝试的:

public class TryCurl {

    static String command = "curl -u username:password -X POST -F cmd=\"deletePage\" -F path=\"/content/demo-task/section\" https://author1.dev.demo.adobecqms.net/bin/wcmcommand";

    public static void main(String[] args) throws Exception {

        Process process = Runtime.getRuntime().exec(command);
        process.getInputStream();
        process.destroy();
    }

}
我做错了什么

  • 为什么要用CURL来做这个;这是非常“脆弱的”(将来可能会失败,它需要很多东西到位,比如:curl要安装在运行它的硬件上,curl要在路径中,密码中不能有空格或其他特殊字符,等等。Java完全能够向服务器发出POST请求

  • 这不是单个进程命令的工作方式。Runtime.exec不是shell-类似于:将引号解开到参数中是shell,而进程不执行任何操作。使用ProcessBuilder并分别传递每个参数,不使用引号

  • 你不能仅仅获取inputstream并丢弃它,你需要实际读取它的字节,否则curl会坐在那里等待有人获取它吐出的数据到standard out。这变得很复杂,这让我们回到#1,在这里可能更容易

  • 您立即运行process.destroy(),很明显,它将破坏该进程,因此命名为.curl,因为您要求它在完成发送帖子之前退出


  • 执行要比听起来复杂得多。

    process.getInputStream()
    您正在获取它并将其放置在…确切的位置?我建议您阅读一篇关于该Process类的教程,了解它的工作原理。您知道,获取一个输入流…它返回一个对象,您可以从中读取输入。但是您放弃了该对象。那么,您希望该代码做什么呢?在我看来,您似乎明白了“好的,有一个过程类"…但后来你停止了研究。你能试着打印运行curl的结果吗?这个过程给了你这样做的方法吗?顺便说一句,有一些库你可以用Java来做类似curl的东西,比如Apache的HTTP组件。你根本不需要Java中的curl。类开箱即用的支持HTTP。但是你最好使用行业标准的libr相反,我要重申其他人说过的话:不要使用curl。Java完全能够调用URL并检索其内容。使用URL类,或使用包。(而且你可能不应该依赖baeldung.com获得建议。我观察到它经常忽略好的实践。)