Apache HttpClient TLS SSL示例

时间:2012-11-20 05:39:17

标签: ssl apache-commons-httpclient

我试图弄清楚如何使用apache HttpClient登录网页。该页面使用的是ssl TLSv1握手协议。我有访问凭据的用户名和密码。我一直在网上阅读一堆东西,但我遗漏了一些东西。有经验的人可能会完全分解我需要配置客户端来做什么。我已经读过必须设置一个SSL套接字,我已经接近正确配置但我得到了一个SSLv2握手协议。

此外,我不确定这次握手是否失败。我可能只是没有正确地保留呼叫之间的会话信息。因此,对此的任何帮助也将受到赞赏。

    <form name="loginuserform" method="post" action="https://www.site.com/login" id="login_form">
    <div id="loginFields">
        <div class="left_input" id="email_input">
            <input id="emailInput" type="text" name="email" tabindex="1" value="">
        </div>
        <div class="left_input" id="password_input">
            <span class="labelStyle">Password</span>
            <input type="password" name="password" tabindex="2">
        </div>
        <div class="left_input">
            <input type="submit" class="primaryActionButton" value="Sign In" tabindex="3">
        </div>
    </div>

</form>

您能否详细解释我们如何回应此表格。

1 个答案:

答案 0 :(得分:1)

它位于HttpClient网站上。它的前提很简单。您需要提供SSL套接字工厂并通过系统属性设置SSL工厂所需的配置,如 - 密钥库路径和访问pwd等。如需使用插座工厂,请查看以下内容。

Protocol myhttps = new Protocol("https", new MySSLSocketFactory(), 443);
HttpClient httpclient = new HttpClient();
httpclient.getHostConfiguration().setHost("www.whatever.com", 443, myhttps);
GetMethod httpget = new GetMethod("/");
try {
  httpclient.executeMethod(httpget);
  System.out.println(httpget.getStatusLine());
} finally {
  httpget.releaseConnection();
}