2012-11-20 77 views
0

我想弄清楚如何使用apache HttpClient登錄到網頁。該頁面正在使用ssl TLSv1握手協議。我擁有訪問憑據的用戶名和密碼。我一直在網上閱讀一些東西,但我錯過了一些東西。有經驗的人可能會破壞我需要配置客戶端所做的事情。我已經讀過,必須設置SSL套接字,並且已經接近正確配置它,但我正在獲得SSLv2握手協議。Apache HttpClient TLS SSL示例

另外我不確定這次握手是否失敗。我可能只是簡單地不保留通話之間的會話信息。所以任何幫助,也將不勝感激。

<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

它在HttpClient網站上。它的保證簡單。您需要提供您的SSL套接字工廠,並通過系統屬性設置SSL工廠所需的配置,如 - keystore路徑和訪問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(); 
} 
+0

這將如何實現使用Apache 4.x?協議對象不存在,任何想法它遷移到什麼? – user1786822

+0

使用最新最好的HttpClient,不再需要使用協議。只需將完整的url傳遞給HttpPost或HttpGet方法(當然使用「https:// ...」),它應該*只是工作*。因此上述代碼片段中的第1行和第3行不是必需的。 – jekennedy