2017-06-26 3 views
0

組織のライセンス情報を取得するために、HTMLUnitを使用してSalesforceでWebスクレイピングを行っています。通常のログイン/テストURLを通じてSalesforceにアクセスしようとすると機能します。しかし、私は/secur/frontdoor.jsp?sid=メソッドを使ってセッションIDでログインできるようにしたい。SalesforceがHTMLUnitと連携していません

これを使用しようとすると、SalesforceはJavaScriptが有効になっていないと苦情を言います。しかし、HTMLUnitで有効にしました。

java.util.logging.Logger.getLogger("com.gargoylesoftware").setLevel(java.util.logging.Level.OFF); 

     final WebClient webClient = new WebClient(BrowserVersion.BEST_SUPPORTED); 
     HtmlPage page; 

     webClient.waitForBackgroundJavaScript(10000); 
     webClient.waitForBackgroundJavaScriptStartingBefore(10000); 
     webClient.getOptions().setJavaScriptEnabled(true); 
     webClient.getOptions().setRedirectEnabled(true); 
     webClient.getOptions().setCssEnabled(true); 
     webClient.getOptions().setThrowExceptionOnScriptError(false); 
     webClient.getOptions().setAppletEnabled(false); 
     webClient.getOptions().setThrowExceptionOnFailingStatusCode(false); 
     webClient.getOptions().setActiveXNative(true); 
     webClient.getOptions().setAppletEnabled(true); 

     page = webClient.getPage("https://salesforce--domain/secur/frontdoor.jsp?sid=SessionId"); 

答えて

0

これがわかりました。何らかの理由で、あなたが自動的にリダイレクトされない。したがって、最初のgetPageからURLを取得し、新しい新しいURLに移動するだけで済みます。

 java.util.logging.Logger.getLogger("com.gargoylesoftware").setLevel(java.util.logging.Level.OFF); 

    final WebClient webClient = new WebClient(BrowserVersion.BEST_SUPPORTED); 
    HtmlPage page; 

    webClient.waitForBackgroundJavaScript(10000); 
    webClient.waitForBackgroundJavaScriptStartingBefore(10000); 
    webClient.getOptions().setJavaScriptEnabled(true); 
    webClient.getOptions().setRedirectEnabled(true); 
    webClient.getOptions().setCssEnabled(true); 
    webClient.getOptions().setThrowExceptionOnScriptError(false); 
    webClient.getOptions().setAppletEnabled(false); 
    webClient.getOptions().setThrowExceptionOnFailingStatusCode(false); 
    webClient.getOptions().setActiveXNative(true); 
    webClient.getOptions().setAppletEnabled(true); 

    page = webClient.getPage("https://salesforce--domain/secur/frontdoor.jsp?sid=SessionId"); 

page = webClient.getPage(page.getURL());

関連する問題