如何在Java中使用cURL?


92

我是Java的新手,想在Java中使用curl。我的问题是Java内置的curl或我必须从任何第三方资源安装它才能与Java一起使用。如果是这样,如何在java中安装curl。我已经搜寻了很长时间,但没有找到任何帮助。希望有人能帮助我。

提前致谢。


@skaffman:还没有。我是一个PHP程序员,最近正在尝试使用Java。所以自然地我很习惯卷曲。因此,在以Java新手的身份工作时,这个问题仍然出于好奇而浮现在我脑海,但我相信不久的将来我会需要它。如果有人知道java中curl的更好替代方法,请也分享。这将非常非常有帮助。谢谢。
moshfiqur 2010年


我问是因为CURL可以完成很多工作,其中有些是Java内置的,而有些不是。更具体的要求将在这里大有帮助。
skaffman 2010年

Answers:


138

您可以使用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中curl的更好替代方法吗,它将提供与curl相同的功能?再次感谢。
moshfiqur 2010年

7
如前所述,HttpClient是“更好的选择”。实际上,您可以使用进行所有操作URLConnection,但您仍然必须了解和理解HTTP规范。顺便说一句,不要试图将PHP与Java进行比较。就像苹果和桔子。为避免麻烦,不要忘记PHP,而对Java有了新的认识。这是一种意识形态完全不同的语言。PS:我都做,所以我从经验上讲。
BalusC

正如其他人提到的那样,请使用HttpClient。我真的建议避免使用libcurl,必须确保为要支持的每个平台捆绑了本机库,迟早有人会抱怨说该库无法在其旧的Power Mac或SGI工作站上运行。
vickirk 2010年

您是否不认为,使用try块始终可以使catch块看起来总是不错:D
Muhammad Suleman 2015年

啊...现在我明白了。您可以在需要嵌套的try / catch的地方使用这种类型的代码。抱歉,是我的错!
穆罕默德·苏莱曼


4

运行时对象允许您从Java执行外部命令行应用程序,因此将允许您使用卷曲然而由于其他的答案表明有可能是一个更好的方式做你正在尝试做的。如果您要做的只是下载文件,则URL对象将非常有用。



3

Curl是非Java程序,必须在Java程序之外提供。

您可以使用Jakarta Commons Net轻松获得许多功能,除非您需要某些特定功能(如“简历传送”)(这很麻烦自己编写代码)


不错,但是Commons Net比curl更远(太多)。
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);
}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.