Перейти к основному содержимому

Использование Curl в Java

· 2 мин. чтения

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 , обратившись к нему из экземпляра Process :

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() для получения экземпляра класса Process .

Давайте посмотрим еще один пример команды 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.