简体   繁体   English

在Windows Java中执行curl命令的等效命令是哪个?

[英]which is the equivalent command for execute a curl command in windows java?

An equivalent command for something like this I don't know which is the correct form to call a batch command 等价的类似命令,我不知道哪种是调用批处理命令的正确形式

def proc =["/bin/sh",      "-c","curl  https://stackoverflow.com"]

     proc.waitFor()
     StringBuffer outputStream = new StringBuffer()
     proc.waitForProcessOutput(outputStream, System.err)
     String output = outputStream.toString()

Why don't you consider using java.net.URL instead? 您为什么不考虑改用java.net.URL?

Sample code is here 示例代码在这里

import java.net.URL;
import java.io.BufferedReader;
import java.io.InputStreamReader;

public class Hello{

public static void main(String []args){

try
{
        URL url = new URL("http://stackoverflow.com");
        try (BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream(), "UTF-8"))) {
        for (String line; (line = reader.readLine()) != null;) {
            System.out.println(line);
            }
        }
}
catch (Exception e)
    {
            System.out.println("error occured");
    }
    }
}

instead if you want to invoke the curl command from java use the below 相反,如果要从Java调用curl命令,请使用以下命令

import java.io.BufferedReader;
import java.io.File;
import java.io.InputStreamReader;
import java.util.ArrayList;

public class ShellFromJava {

    public static ArrayList<String> command(final String cmdline,
    final String directory) {
        try {
            Process process =
                new ProcessBuilder(new String[] {"bash", "-c", cmdline})
                    .redirectErrorStream(true)
                    .directory(new File(directory))
                    .start();

            ArrayList<String> output = new ArrayList<String>();
            BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream()));
            String line = null;
            while ( (line = br.readLine()) != null )
                output.add(line);

            if (0 != process.waitFor())
                return null;

            return output;

        } catch (Exception e) {
            //Warning: doing this is no good in high-quality applications.
            //Instead, present appropriate error messages to the user.
            //But it's perfectly fine for prototyping.

            return null;
        }
    }

public static void main(String[] args) {
        testHandler("curl http://stackoverflow.com");
    }

    static void testHandler(String cmdline) {
        ArrayList<String> output = command(cmdline, ".");
        if (null == output)
            System.out.println("\n\n\t\tCOMMAND FAILED: " + cmdline);
        else
            for (String line : output)
                System.out.println(line);

    }
}

You can spawn a process from Java: 您可以从Java产生一个进程:

public class useProcess {
  public static void main(String[] args) throws Exception {
    String params[] = {"/bin/sh", "-c", "curl", "https://stackoverflow.com"};
    Process myProcess = Runtime.getRuntime().exec(params);
    myProcess.waitFor();
  }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM