【问题标题】:How to use cURL in Java?如何在 Java 中使用 cURL?
【发布时间】:2011-02-04 22:19:40
【问题描述】:

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

提前致谢。

【问题讨论】:

  • @skaffman:还没有。我是一名 PHP 程序员,最近正在尝试 java。所以很自然地我很习惯卷曲。所以,作为一个新手在学习java时,这个问题出现在我的脑海中,仍然是出于好奇,但我相信在不久的将来我会需要它。如果有人知道java中curl的任何更好的选择,那么也请分享。这将非常有帮助。谢谢。
  • 我问是因为 CURL 做了一大堆东西,其中一些是 Java 内置的,有些不是。更具体的要求在这里会有很大帮助。

标签: java curl


【解决方案1】:

您可以使用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's simple tutorial。然而,它有点冗长。为了减少冗长的代码,您可能需要考虑使用Apache HttpClient

顺便说一句:如果您的下一个问题是“如何处理 HTML 结果?”,那么答案是“Use a HTML parser.No, don't use regex for this.”。

另见:

【讨论】:

  • @BalusC:谢谢。从您提供的链接中进行一些研究。顺便说一句,你知道在 java 中有什么更好的 curl 替代方法,它可以提供与 curl 相同的功能吗?再次感谢。
  • 如前所述,HttpClient 是“更好的选择”。事实上,您可以使用URLConnection 做任何事情,但您还必须了解并理解 HTTP 规范。顺便说一句,不要试图将 PHP 与 Java 进行比较。这就像苹果和橘子。为了避免自我困扰/困惑,宁可忘记 PHP,重新审视 Java。这是一种具有完全不同意识形态的语言。 PS:我两者都做,所以我根据经验来判断。
  • 正如this和其他人提到的那样使用HttpClient。我真的建议避免使用 libcurl,你必须确保为你想要支持的每个平台捆绑本地库,迟早有人会抱怨它在他们旧的 power mac 或 SGI 工作站上不起作用。
  • 你不觉得吗,catch 块与 try 块一起看起来总是不错:D
  • 啊……现在我明白了。您可以在需要嵌套 try/catch 的地方使用这种类型的代码。对不起我的错误!
【解决方案2】:

有些人已经提到了HttpURLConnectionURLURLConnection。如果您需要 curl 库为您提供的所有控制和额外功能(以及更多),我建议您使用 Apache's httpclient

【讨论】:

    【解决方案3】:

    Runtime 对象允许您从 Java 执行外部命令行应用程序,因此允许您使用 cURL,但是其他答案表明可能有更好的方法来做您想做的事情。如果您只想下载一个文件,那么 URL 对象会很好用。

    【讨论】:

      【解决方案4】:

      使用标准 java 库,我建议查看 HttpUrlConnection 类 http://java.sun.com/javase/6/docs/api/java/net/HttpURLConnection.html

      它可以处理 curl 在建立连接时可以做的大部分事情。 您对流的处理取决于您。

      【讨论】:

        【解决方案5】:

        Curl 是一个非 Java 程序,必须在您的 Java 程序之外提供。

        您可以使用Jakarta Commons Net 轻松获得大部分功能,除非您需要某些特定功能,例如“简历传输”(您自己编写代码很乏味)

        【讨论】:

        • 不错,但 Commons Net 比 curl 走得更远(太多了)。
        【解决方案6】:

        使用Runtime 调用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);
        }
        

        【讨论】:

        • 要在 java 11 中成功运行,字符串数组应该初始化如下code String[] commands = {"curl", "-X", "GET", "checkip.amazonaws.com" }; code
        猜你喜欢
        • 2016-06-11
        • 2020-01-30
        • 1970-01-01
        • 2019-09-18
        • 1970-01-01
        • 2016-08-15
        • 1970-01-01
        • 2013-01-11
        相关资源
        最近更新 更多