2012-11-20 4 views
0

아파치 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 사이트에 있습니다. 그것의 prety 간단합니다. SSL 소켓 팩토리를 제공하고 시스템 등록 정보를 통해 - keystore path 및 access pwd etc와 같은 SSL 팩토리에 필요한 구성을 설정해야합니다. 소켓 팩토리를 사용하려면 아래를 확인하십시오.

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를 사용하면 더 이상 프로토콜을 사용할 필요가 없습니다. HttpPost 또는 HttpGet 메서드 (물론 "https : // ..."를 사용)에 전체 URL을 전달하기 만하면 * 작동합니다. 따라서 위의 코드 스 니펫에있는 줄 1과 3은 필요하지 않습니다. – jekennedy