JavaでcURLを使用する方法


90

私はJavaの初心者で、Javaでcurlを使用したいと思っていました。私の質問は、Javaに組み込まれたcurlであるか、Javaで使用するにはサードパーティのソースからインストールする必要があります。もしそうなら、Javaでカールをインストールする方法。私は長い間グーグルで働いてきましたが、助けは見つかりませんでした。誰かが私を助けてくれることを願っています。

前もって感謝します。


@skaffman:まだ何もありません。私は最近Javaを試しているPHPプログラマーです。だから当然私はカールにとても慣れています。だから、初心者としてjavaに取り組んでいるときに、この疑問が頭に浮かびます。それでも好奇心は失われますが、近い将来、必要になると確信しています。誰かがJavaでカールのより良い代替案を知っているなら、それも共有してください。とても助かります。ありがとう。
moshfiqur 2010


CURLはさまざまなことを行うので、Javaに組み込まれているものとそうでないものがあります。より具体的な要件は、ここで非常に役立ちます。
skaffman 2010

回答:


136

java.net.URLおよび/またはを利用できjava.net.URLConnectionます。

URL url = new URL("https://stackoverflow.com");

try (BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream(), "UTF-8"))) {
    for (String line; (line = reader.readLine()) != null;) {
        System.out.println(line);
    }
}

この件に関するOracleの簡単なチュートリアルも参照してください。ただし、これは少し冗長です。冗長なコードを少なくするために、代わりにApache HttpClientを検討することができます。

ちなみに、次の質問が「HTML結果の処理方法」である場合、答えは「HTMLパーサーを使用しますいいえ、これには正規表現を使用しないでください。」です。

以下も参照してください。


@BalusC:ありがとう。あなたが提供したリンクからいくつかの研究を行う。ところで、あなたはカールのような同じ機能を提供するJavaのカールのより良い代替品を知っていますか?再度、感謝します。
moshfiqur 2010

6
前述のように、HttpClientは「より良い代替手段」です。実際、ですべてを行うことができますがURLConnection、HTTP仕様を理解している必要があります。ちなみに、PHPとJavaを比較しないでください。リンゴとオレンジのようです。自己トラブルや混乱を避けるために、PHPを忘れてJavaに新鮮な見方をしてください。それはまったく異なるイデオロギーを持つ言語です。PS:私は両方を行うので、経験から言います。
BalusC 2010

これと他の人々が言及したように、HttpClientを使用します。libcurlの使用は避けることをお勧めします。サポートするすべてのプラットフォームにネイティブライブラリをバンドルする必要があります。遅かれ早かれ、誰かが古いpower macまたはSGIワークステーションで機能しないと不平を言うでしょう。
vickirk 2010

キャッチブロックは、tryブロックで常に見栄えがよい:D
Muhammad Suleman 2015

ああ...もうわかった ネストされたtry / catchが必要な場合は、このタイプのコードを使用できます。すみません、私の間違いです!
Muhammad Suleman 2015


4

ランタイムオブジェクトは、Javaからの外部コマンドラインアプリケーションを実行することができますので、他の答えはあなたがやろうとしているものを行うには良い方法は、おそらくそこにあることを示しているとして、あなたがしかし、カールを使用することができるようになります。ファイルをダウンロードするだけの場合は、URLオブジェクトが適切に機能します。



3

CurlはJava以外のプログラムであり、Javaプログラムの外部で提供する必要があります。

必要な「再開転送」などの特定の機能が必要な場合を除いて、Jakarta Commons Netを使用して機能の多くを簡単に取得できます(自分でコードを作成するのは面倒です)。


いいですが、Commons Netはカールよりも少し(多すぎます)進んでいます。
BalusC 2010

2

ランタイムを使用してCurlを呼び出します。このコードはUbuntuとWindowsの両方で機能します。

String[] commands = new String {"curl", "-X", "GET", "http://checkip.amazonaws.com"};
Process process = Runtime.getRuntime().exec(commands);
BufferedReader reader = new BufferedReader(new 
InputStreamReader(process.getInputStream()));
String line;
String response;
while ((line = reader.readLine()) != null) {
    response.append(line);
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.