Usando Curl em Java

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.