1. Обзор
В этом уроке мы рассмотрим, как использовать инструмент curl в программе Java.
Curl – это сетевой инструмент, используемый для передачи данных между сервером и curl клиентом с использованием таких протоколов, как HTTP, FTP, TELNET и SCP.
2. Основное использование локона
Мы можем выполнить локон команды из Java с помощью ProcessBuilder ProcessBuilder Процесс класс.
Давайте рассмотрим пример отправки команд непосредственно в операционную систему:
String command = "curl -X GET https://postman-echo.com/get?foo1=bar1&foo2=bar2"; ProcessBuilder processBuilder = new ProcessBuilder(command.split(" "));
Сначала мы создаем переменную command , прежде чем передать ее конструктору ProcessBuilder .
Здесь стоит отметить, что если исполняемый файл curl не находится в вашем системном пути, нам придется указать его полный путь в нашей командной строке.
Затем мы можем установить рабочий каталог для ProcessBuilder и запустить процесс:
processBuilder.directory(new File("/home/")); Process process = processBuilder.start();
С этого момента мы можем получить InputStream , обратившись к нему из экземпляра Process :
InputStream inputStream = process.getInputStream();
Когда обработка будет завершена, мы сможем получить код выхода с помощью:
int exitCode = process.exitValue();
Если нам нужно выполнить дополнительные команды, мы можем повторно использовать ProcessBuilder 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.