Usare Curl in Java

1. Panoramica

In questo tutorial, vedremo come utilizzare lo strumento curl all'interno di un programma Java.

Curl è uno strumento di rete utilizzato per trasferire dati tra un server e il client curl utilizzando protocolli come HTTP, FTP, TELNET e SCP.

2. Uso di base di Curl

Possiamo eseguire i comandi curl da Java utilizzando ProcessBuilder , una classe helper per la creazione di istanze della classe Process .

Vediamo un esempio di invio di comandi direttamente al sistema operativo:

String command = "curl -X GET //postman-echo.com/get?foo1=bar1&foo2=bar2"; ProcessBuilder processBuilder = new ProcessBuilder(command.split(" ")); 

Innanzitutto, creiamo la variabile di comando prima di passarla al costruttore ProcessBuilder .

Vale la pena notare qui che se l' eseguibile curl non è nel nostro percorso di sistema, dovremo fornire il suo percorso completo nella nostra stringa di comando.

Possiamo quindi impostare la directory di lavoro per ProcessBuilder e avviare il processo:

processBuilder.directory(new File("/home/")); Process process = processBuilder.start(); 

Da qui in poi, possiamo ottenere InputStream accedendovi dall'istanza di Process :

InputStream inputStream = process.getInputStream(); 

Quando l'elaborazione è completa, possiamo ottenere il codice di uscita con:

int exitCode = process.exitValue(); 

Se abbiamo bisogno di eseguire comandi aggiuntivi, possiamo riutilizzare l' istanza di ProcessBuilder passando nuovi comandi e argomenti in un array String :

processBuilder.command( new String[]{"curl", "-X", "GET", "//postman-echo.com?foo=bar"}); 

Infine, per terminare ogni istanza di Process , dovremmo usare:

process.destroy(); 

3. Una semplice alternativa al ProcessBuilder

In alternativa all'utilizzo della classe ProcessBuilder , possiamo utilizzare Runtime.getRuntime () per ottenere un'istanza della classe Process .

Vediamo un altro comando curl di esempio , questa volta utilizzando una richiesta POST :

curl -X POST //postman-echo.com/post --data foo1=bar1&foo2=bar2

Ora, eseguiamo il comando utilizzando il metodo Runtime.getRuntime () :

String command = "curl -X POST //postman-echo.com/post --data foo1=bar1&foo2=bar2"; Process process = Runtime.getRuntime().exec(command); 

Innanzitutto, creiamo di nuovo un'istanza della classe Process , ma questa volta utilizzando Runtime.getRuntime () . Possiamo ottenere un InputStream come nel nostro esempio precedente chiamando il metodo getInputStream () :

process.getInputStream();

Quando l'istanza non è più necessaria, dovremmo rilasciare le risorse di sistema chiamando il metodo destroy () .

4. Conclusione

In questo articolo, abbiamo mostrato due modi per utilizzare curl in Java.

Questo e altri esempi di codice sono disponibili su GitHub.