【问题标题】:cURL equivalent in JavaJava 中的 cURL 等效项
【发布时间】:2011-01-10 12:23:26
【问题描述】:

我有

exec(
  "curl".
  " --cert $this->_cCertifikatZPKomunikace".
  " --cacert $this->_cCertifikatPortalCA".
  " --data \"request=".urlencode($fc_xml)."\"".
  " --output $lc_filename_stdout".
  " $this->_cPortalURL".
  " 2>$lc_filename_stderr",
  $la_dummy,$ln_RetCode
);

在 php.ini 中。

我必须通过 java 来完成。你能帮帮我吗?

感谢雅库布

【问题讨论】:

标签: java curl


【解决方案1】:

看看URLConnection。 Sun 有一些examples。它具有支持某些特定 HTTP 和 HTTPS 功能的各种子类。

【讨论】:

    【解决方案2】:

    我使用 HttpClient 方法:

    import org.apache.commons.httpclient.HttpClient;
    import org.apache.commons.httpclient.HttpException;
    import org.apache.commons.httpclient.HttpMethod;
    import org.apache.commons.httpclient.methods.GetMethod;
    

    像这样:

    HttpClient client = new HttpClient();
    HttpMethod method = new GetMethod("http://www.google.com");
    int responseCode = client.executeMethod(method);
    if (responseCode != 200) {
        throw new HttpException("HttpMethod Returned Status Code: " + responseCode + " when attempting: " + url);
    }
    String rtn = StringEscapeUtils.unescapeHtml(method.getResponseBodyAsString());
    

    编辑:哎呀。 StringEscapeUtils 来自 commons-lang。 http://commons.apache.org/lang/api/org/apache/commons/lang/StringEscapeUtils.html

    【讨论】:

    • HTTPClient 很棒,但是您显示的代码会失败,因为它没有解决证书...
    • 我去了阿帕奇。 httpcomponents 已关闭,而不是您现在导入 org.apache.httpclient.*。我下载了整个包,导入了它。它给了我大约 100 个错误。当我看到它们时,它们都在那个包的类中。在下载的包commons 中找不到。当没有公共文件夹时,其中的一些类试图导入org.apache.commons.* !!!这是什么??
    • 这是一个很久以前回答的问题。事情发生了变化,这不再是正确的方法。
    【解决方案3】:

    除了 Quotidian 和 Yacoby 提供的纯 Java 答案之外,您还可以尝试像在 php 中一样执行 curl 二进制文件。查看如何使用ProcessBuilder 类。

    【讨论】:

      【解决方案4】:

      您可以使用Runtime 调用getRuntime() 在Java 中执行命令

      运行时链接到javadoc

      Here's 一个很好的使用运行时的例子。

      Here's 一个使用 Runtime 或 ProcessBuilder 的不错示例。

      我希望其中一些有用。

      【讨论】:

        【解决方案5】:

        cURL 站点链接到 Github 上的 Java Bindings

        【讨论】:

        • 是的,但它不是纯 Java 解决方案,这是(IMO)Java 的主要优势。
        • (+1) 是的,但它会使使用证书变得容易,并且可以很好地从他的原始电话中翻译出来。
        • 提供的链接已失效
        • @Thibault 我已经更新了 GitHub 上绑定新位置的链接。
        【解决方案6】:

        您可以在 Java 中使用HtmlUnit API

        import com.gargoylesoftware.htmlunit.WebClient;
        import com.gargoylesoftware.htmlunit.html.HtmlPage;
        

        像这样:

        WebClient webClient = new WebClient();
        HtmlPage homePage = webClient.getPage("http://www.google.com");
        String homePageString = homePage.asXml();
        

        【讨论】:

          猜你喜欢
          • 2010-09-12
          • 1970-01-01
          • 2018-03-18
          • 1970-01-01
          • 2011-10-12
          • 1970-01-01
          • 2018-10-31
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多