какая эквивалентная команда для выполнения команды curl в Windows Java? - PullRequest
0 голосов
/ 21 мая 2018

Эквивалентная команда для чего-то подобного, я не знаю, какая форма является правильной для вызова пакетной команды

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

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

Ответы [ 2 ]

0 голосов
/ 21 мая 2018

Вы можете создать процесс из 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();
  }
}
0 голосов
/ 21 мая 2018

Почему бы вам не рассмотреть возможность использования вместо этого java.net.URL?

Пример кода здесь

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");
    }
    }
}

, если вы хотите вызвать команду curl из javaиспользуйте ниже

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);

    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...