【问题标题】:cURL equivalent in JAVAJAVA 中的 cURL 等效项
【发布时间】:2010-09-12 02:42:03
【问题描述】:

我的任务是为开源 JAVA 应用程序编写身份验证组件。我们有一个使用https 的内部身份验证小部件。我有一些示例php 代码访问使用cURL 处理传输的widget

我的问题是是否有cURLJAVA 的端口,或者更好的是,什么基础包能让我足够接近来处理任务?

更新

简而言之,我想在 JAVA 中复制的代码:

$cp = curl_init();
$my_url = "https://" . AUTH_SERVER . "/auth/authenticate.asp?pt1=$uname&pt2=$pass&pt4=full";
curl_setopt($cp, CURLOPT_URL, $my_url);
curl_setopt($cp, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($cp);
curl_close($cp);

Heath,我认为你在正确的轨道上,我想我最终会使用 HttpsURLConnection,然后从响应中挑选出我需要的东西。

【问题讨论】:

    标签: java php authentication curl


    【解决方案1】:

    省略异常处理:

    HttpURLConnection con = (HttpURLConnection) new URL("https://www.example.com").openConnection();
    con.setRequestMethod("POST");
    con.getOutputStream().write("LOGIN".getBytes("UTF-8"));
    con.getInputStream();
    

    【讨论】:

    • 您将如何为此添加基本身份验证?
    • @BWelfel, con.setRequestProperty("授权", "基本 dXNlcm5hbWU6cGFzc3dvcmQ="); //用户名:密码base64编码
    • con.setDoOutput(true) ?
    【解决方案2】:

    我会使用Commons Http Client。项目中有一个contrib类可以让你使用ssl。

    我们正在使用它,它运行良好。

    编辑:这是SSL Guide

    【讨论】:

    【解决方案3】:

    jsoup

    jsoup 库获取 URL 作为其 HTML 抓取和解析职责的第一步。

    Document doc = Jsoup.connect("http://en.wikipedia.org/").get();
    

    【讨论】:

      【解决方案4】:

      尝试使用Apache Commons Net 获取网络协议。免费!

      【讨论】:

      • 这个库中没有 HTTP 客户端,这很遗憾,因为否则 Apache Commons 非常好(从 经验 说):commons.apache.org/net
      【解决方案5】:

      如果您需要比 Commons Net 提供的功能更多的功能,您也可以尝试 Apache 项目中的 [http://hc.apache.org/](HTTP Components)。

      【讨论】:

        【解决方案6】:

        您可以尝试 curl-to-java lib 将 curl php 代码转换为 java 代码https://github.com/jeffreyning/curl-to-java 这样的演示

        public Object curl(String url, Object postData, String method) {
        
        CurlLib curl = CurlFactory.getInstance("default");
        ch = curl.curl_init();
        curl.curl_setopt(ch, CurlOption.CURLOPT_CONNECTTIMEOUT, 1000);
        curl.curl_setopt(ch, CurlOption.CURLOPT_TIMEOUT, 5000);
        curl.curl_setopt(ch, CurlOption.CURLOPT_SSL_VERIFYPEER, false);
        curl.curl_setopt(ch, CurlOption.CURLOPT_SSL_VERIFYHOST, false);
        String postDataStr = "key1=v1";
        
        curl.curl_setopt(ch, CurlOption.CURLOPT_CUSTOMREQUEST, "POST");
        curl.curl_setopt(ch, CurlOption.CURLOPT_POSTFIELDS, postDataStr);
        curl.curl_setopt(ch, CurlOption.CURLOPT_URL, "https://xxxx.com/yyy");
        Object html = curl.curl_exec(ch);
        Object httpCode = curl.curl_getinfo(ch, CurlInfo.CURLINFO_HTTP_CODE);
        if (httpCode != null && 200 == Integer.valueOf(httpCode.toString())) {
            return null;
        }
        return html;
        }
        

        【讨论】:

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