Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.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下载zip文件_Java_Curl - Fatal编程技术网

如何在java中使用curl下载zip文件

如何在java中使用curl下载zip文件,java,curl,Java,Curl,我正在尝试用java中的curl下载一个zip文件 public static void main(String[] args) throws Exception { String url = "https://abcd.com "; String[] command = { "curl", " -X ", "POST ", "-H ", "\"Content-Type: applica

我正在尝试用java中的curl下载一个zip文件

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

     String url = "https://abcd.com ";
     String[] command = {
              "curl", 
              " -X ", "POST ", 
              "-H ", "\"Content-Type: application/json\" ", 
              "-H ","Accept:application/json ",
              "-H ", "Accept-Encoding:gzip ", 
              "-d' ", url,
              " >> "," /Users/myUser/Documents/Test1.gzip"};

     Process p = Runtime.getRuntime().exec(command);
     p.exitValue();

}
然而,没有任何东西被触发。 如果我遗漏了什么,请告诉我


当我从终端运行相同的命令时,zip文件被下载。

这就像编写一个文件一样简单 使用ApacheCommonsIO。它有一个FileUtils库,可以在引擎盖下完成所有工作

基本上,在卷曲文件之后,需要将其保存到某个定义良好的路径上的磁盘(FileOutputStream)

参考(在可接受的解决方案中也有代码段):

Runtime.exec()
不执行shell,shell是唯一理解
>
的东西。如果需要重定向,请使用ProcessBuilder的重定向功能,或调整命令以启动shell

注:

  • 很难理解为什么在这里使用Java而不是shell脚本,或者相反,如果必须使用Java为什么要使用
    curl
    。你不需要养一条狗自己叫

  • 调用
    exitValue()
    没有多大意义,除非您打算对结果做些什么,或者注意到进程尚未退出


  • 尝试在
    p.exitValue()之前添加
    和check您可以获取流程错误流和std流,并将它们打印出来,您将知道流程执行过程中发生了什么,但是,您为什么要使用
    curl
    ?为什么不使用JavaAPI下载文件
    Url
    URLConnection
    …重定向在
    Runtime.exec()
    IIRC中不起作用。我建议改为使用该类。@Aaron Redirection在
    Runtime.exec()
    ProcessBuilder.start()
    中根本不起作用。它比这简单得多,但OP表示出于某种原因他想使用
    curl
    " >> "