2016-04-14 22 views
0

私はJsoupに問題があり、プライベートな安全な証明書でウェブサイトにログインしています。 私はHtmlUnitを使用しようとするでしょうし、すべてがこのように、正常に動作します:証明書を正しくインポートされない「JsoupとプライベートSSL証明書との接続方法は?

public class TestHtmlUnit { 
    private final static Logger logger = Logger.getLogger(TestHtmlUnit.class); 
    private WebClient webClient; 
    private PropertiesManagement management; 

    private void loginForm() throws Exception { 
     final HtmlPage page1 = webClient.getPage(management.getHomeURL()); 
     final HtmlForm form = page1.getFormByName("form1"); 
     final HtmlSubmitInput button = form.getInputByName("btnAccedi"); 
     final HtmlTextInput usernameField = form.getInputByName("txtUtente"); 
     final HtmlPasswordInput passwordField = form.getInputByName("txtPwd"); 
     usernameField.setValueAttribute(management.getUsername()); 
     passwordField.setValueAttribute(management.getPassword()); 
     final HtmlPage page2 = button.click(); 
     printPage(page2); 

     logger.debug("End!!"); 
    } 

    public void printPage(HtmlPage page) { 
     WebResponse response = page.getWebResponse(); 
     String content = response.getContentAsString(); 
     logger.debug("HTML SOURCE: " + content); 
    } 

    public void init() { 
     try { 
      webClient = new WebClient(); 
      management = new PropertiesManagement(); 
      webClient.getOptions().setJavaScriptEnabled(false); 
      webClient.getOptions().setUseInsecureSSL(true); 
      webClient.getOptions().setSSLClientCertificate(management.getFilePathURL(), management.getPassword(), management.getSSLProtocol()); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } 

    public static void main(String[] args) throws Exception { 
     TestHtmlUnit testHtmlUnit = new TestHtmlUnit(); 
     testHtmlUnit.init(); 
     testHtmlUnit.loginForm(); 
    } 

} 

が、私はJsoupと同じ証明書と同じサイトに接続しようとすると、私は応答を取得"

どうすればよいですか?

「なぜ、あなたはhtmlunitを使うことができるのですか? (良い質問)、私の答えは "私はhtmlUnit:Dのポップアップページの多くをナビゲートすることができないためです!

+1

は「プライベート証明書は、」点では矛盾です。 – EJP

+0

笑...それは本当ですが、私はあなたが私を理解することを願っています – Zaknafein

答えて

-1

私は自分自身を解決:

FileInputStream fin = new FileInputStream(management.getFilePath()); 
KeyStore ks = KeyStore.getInstance(management.getSSLProtocol()); 
ks.load(fin, management.getPassword().toCharArray()); 
System.setProperty("javax.net.ssl.keyStore", "certificate.jks"); 
System.setProperty("javax.net.ssl.keyStorePassword", management.getPassword()); 

Connection.Response res = Jsoup.connect(management.getHomeURL()). 
     timeout(5000).ignoreHttpErrors(true).followRedirects(true).execute(); 
res = Jsoup.connect(management.getHomeURL()).timeout(5000).execute(); 
Document post = res.parse(); 

System.out.println(post.html()); 

は今、最適化の少しを必要とする...しかし、それは次のステップです:D

+3

上記には何も「最適化」することはできません。何が問題でも解決する方法についての説明はありません。 – EJP

関連する問題