Usando Curl em Java
1. Visão geral
Neste tutorial, veremos como usar a ferramentacurl dentro de um programa Java.
Curl is a networking tool used to transfer data between a server and the curl client usando protocolos como HTTP, FTP, TELNET e SCP.
2. Uso básico do Curl
Podemos executar comandoscurl em Java usandoProcessBuilder - uma classe auxiliar para construir instâncias da classeProcess.
Vejamos um exemplo de envio de comandos diretamente para o sistema operacional:
String command =
"curl -X GET https://postman-echo.com/get?foo1=bar1&foo2=bar2";
ProcessBuilder processBuilder = new ProcessBuilder(command.split(" "));
Primeiro, criamos a variávelcommand antes de passá-la para o construtorProcessBuilder.
É importante notar aqui que se o executávelcurl não estiver no caminho do nosso sistema, teremos que fornecer seu caminho completo em nossa string de comando.
Podemos então definir o diretório de trabalho paraProcessBuilder e iniciar o processo:
processBuilder.directory(new File("/home/"));
Process process = processBuilder.start();
A partir daqui, podemos obter oInputStream acessando-o a partir da instânciaProcess:
InputStream inputStream = process.getInputStream();
Quando o processamento estiver concluído, podemos obter o código de saída com:
int exitCode = process.exitValue();
Se precisarmos executar comandos adicionais, podemos reutilizar a instânciaProcessBuilder passando novos comandos e argumentos em uma matrizString:
processBuilder.command(
new String[]{"curl", "-X", "GET", "https://postman-echo.com?foo=bar"});
Finalmente, para encerrar cada instânciaProcess, devemos usar:
process.destroy();
3. Uma alternativa simples para oProcessBuilder
Como alternativa ao uso da classeProcessBuilder, podemos usarRuntime.getRuntime() para obter uma instância da classeProcess.
Vamos ver outro exemplo de comandocurl - desta vez usando uma solicitaçãoPOST:
curl -X POST https://postman-echo.com/post --data foo1=bar1&foo2=bar2
Agora, vamos executar o comando usando o métodoRuntime.getRuntime() :
String command = "curl -X POST https://postman-echo.com/post --data foo1=bar1&foo2=bar2";
Process process = Runtime.getRuntime().exec(command);
Em primeiro lugar, criamos uma instância da classeProcess novamente, mas desta vez usandoRuntime.getRuntime(). Podemos obter umInputStream como em nosso exemplo anterior chamando o métodogetInputStream():
process.getInputStream();
Quando a instância não for mais necessária, devemos liberar recursos do sistema chamando o métododestroy().
4. Conclusão
Neste artigo, mostramos duas maneiras de usarcurl em Java.
Este e mais exemplos de código estão disponíveisover on GitHub.