HOWTO · Java

Java で cURL を使用する

このチュートリアルでは、cURL について説明し、Java のコード例を使用してその使用法を示します。

今日は、Java の cURL について学びます。 また、ProcessBuilder および Runtime.getRuntimecURL を使用する方法も学びます。

JavaのcURL

cURL は、cURL クライアントとサーバーの間でデータを転送するネットワーク ツールです。 cURL は、HTTPFTPTELNET、および SCP などのプロトコルを使用します。

cURL は、コア Java の java.net.URLConnection パッケージまたは Apache の ApacheHttpClient と同様に機能します。 ただし、cURL はコマンドで機能するため、Java では ProcessBuilder または Runtime.getRuntime() を使用する必要がある場合があります。

Java で cURL を使用するさまざまな方法

まず、cURL がシステムにインストールされていることを確認してください。 次に、これらのリンクから cURL インストーラーをダウンロードして、システムにインストールします。

方法 1: ProcessBuildercURL を使用する

cURL がシステムにインストールされると、Java で使用できるようになります。 Java で cURL を使用する方法の簡単な例を次に示します。

String Demo_Command = "curl -X GET https://localhost/get?delft1=stack1&delft2=stack2";
ProcessBuilder Process_Builder = new ProcessBuilder(Demo_Command.split(" "));

上記のコードは、指定されたサーバー リンクで get リクエストを使用して cURL コマンドを実行します。 cURL のシステム パス も提供する必要があります。 そうしないと、機能しません。

String Demo_Command = "curl -X GET https://localhost/get?delft1=stack1&delft2=stack2";
ProcessBuilder Process_Builder = new ProcessBuilder(Demo_Command.split(" "));
Process_Builder.directory(new File("/home/"));
Process Demo_process = Process_Builder.start();

これで、プロセスから入力ストリームを取得できます。処理が完了したら、終了コードを取得してプロセス インスタンスを破棄できます。

String Demo_Command = "curl -X GET https://localhost/get?delft1=stack1&delft2=stack2";
ProcessBuilder Process_Builder = new ProcessBuilder(Demo_Command.split(" "));
Process_Builder.directory(new File("/home/"));
Process Demo_process = Process_Builder.start();

InputStream Input_Stream = Demo_process.getInputStream();
int Exit_Code = Demo_process.exitValue();
System.out.println(Exit_Code);
Demo_process.destroy();

追加の cURL コマンドについては、ProcessBuilder を再利用するか、コマンドを配列として渡すことができます。

方法 2: Runtime.getRuntimecURL を使用する

Java でコマンドを実行するもう 1つの方法は、プロセス クラスのインスタンスを取得する Runtime.getRuntime() です。 Runtime.getRuntime() は、Java で cURL を使用するための優れた代替手段です。

Java で Runtime.getRuntime を使用して cURL を実行してみましょう。

String Demo_Command = "curl -X POST https://localhost/post --data delft1=stack1&delft2=stack2";
Process Demo_process = Runtime.getRuntime().exec(Demo_Command);

上記のコードは、cURL および Runtime.getRuntime メソッドを使用してポスト リクエストを送信します。 これで、上記と同じ方法で InputStream を取得できます。

String Demo_Command = "curl -X POST https://localhost/post --data delft1=stack1&delft2=stack2";
Process Demo_process = Runtime.getRuntime().exec(Demo_Command);
InputStream Input_Stream = Demo_process.getInputStream();
Demo_process.destroy();

インスタンスが不要になった場合は、プロセス インスタンスで destroy() メソッドを使用してシステム リソースを解放する必要があります。