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.