«1. Обзор

В этом руководстве мы рассмотрим, как использовать инструмент curl внутри программы Java.

Curl — это сетевой инструмент, используемый для передачи данных между сервером и клиентом curl с использованием таких протоколов, как HTTP, FTP, TELNET и SCP.

2. Основное использование Curl

Мы можем выполнять команды curl из Java, используя ProcessBuilder — вспомогательный класс для создания экземпляров класса Process.

Давайте рассмотрим пример отправки команд непосредственно в операционную систему:

String command =
  "curl -X GET https://postman-echo.com/get?foo1=bar1&foo2=bar2";
ProcessBuilder processBuilder = new ProcessBuilder(command.split(" "));

Сначала мы создаем переменную команды, прежде чем передать ее конструктору ProcessBuilder.

Здесь стоит отметить, что если исполняемый файл curl не находится на нашем системном пути, мы должны указать его полный путь в нашей командной строке.

Затем мы можем установить рабочий каталог для ProcessBuilder и запустить процесс:

processBuilder.directory(new File("/home/"));
Process process = processBuilder.start();

С этого момента мы можем получить InputStream, обратившись к нему из экземпляра процесса:

InputStream inputStream = process.getInputStream();

Когда обработка завершено, мы можем получить код выхода с помощью:

int exitCode = process.exitValue();

Если нам нужно запустить дополнительные команды, мы можем повторно использовать экземпляр ProcessBuilder, передав новые команды и аргументы в массиве строк:

processBuilder.command(
  new String[]{"curl", "-X", "GET", "https://postman-echo.com?foo=bar"});

Наконец, чтобы завершить каждый экземпляр Process, мы должны использовать:

process.destroy();

3. Простая альтернатива ProcessBuilder

В качестве альтернативы использованию класса ProcessBuilder мы можем использовать Runtime.getRuntime() для получения экземпляра Класс процесса.

Давайте посмотрим на другой пример команды curl — на этот раз с использованием POST-запроса:

curl -X POST https://postman-echo.com/post --data foo1=bar1&foo2=bar2

Теперь давайте выполним команду с помощью метода Runtime.getRuntime():

String command = "curl -X POST https://postman-echo.com/post --data foo1=bar1&foo2=bar2";
Process process = Runtime.getRuntime().exec(command);

Во-первых, мы снова создайте экземпляр класса Process, но на этот раз с помощью Runtime.getRuntime(). Мы можем получить InputStream, как и в предыдущем примере, вызвав метод getInputStream():

process.getInputStream();

Когда экземпляр больше не нужен, мы должны освободить системные ресурсы, вызвав метод destroy().

4. Заключение

В этой статье мы показали два способа использования curl в Java.

Этот и другие примеры кода доступны на GitHub.