2017-08-26 42 views
-2

我想用HTMLUnit來訪問用戶名和密碼的網站的html。 https://186.springfield.k12.il.us/IS3/是我的學校發佈成績的地方。我只知道Java,在這方面我不太擅長,這是我的第一個問題。我會很感激有人幫助我完成這項工作。下面是我有:試圖用java訪問安全的網站

public static void main(String[] args) { 
    WebClient webClient = new WebClient(); 
    try { 
     HtmlPage page = (HtmlPage) webClient 
       .getPage("https://186.springfield.k12.il.us/IS3/"); 
     HtmlForm form = page.getFormByName("login_form"); 
     form.getInputByName("loginuseridvar").setValueAttribute("myusername"); 
     HtmlInput passWordInput = form.getInputByName("password"); 
     passWordInput.removeAttribute("disabled"); 
     passWordInput.setValueAttribute("mypassword"); 

     page = form.getInputByValue("Log On").click(); 

     System.out.println(page.asText()); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } finally { 
     webClient.close(); 
    } 
} 
+1

你的問題是什麼? –

+1

請澄清您的具體問題或添加其他詳細信息,以突出顯示您的需要。正如目前所寫,很難確切地說出你在問什麼。請參閱[如何提問](https://stackoverflow.com/help/how-to-ask)頁面以獲得幫助,以澄清此問題 –

+0

我正在努力使其工作,我無法弄清楚爲什麼它沒有。 –

回答

0

試試這個

try (WebClient webClient = new WebClient()) { 
     // page has an js error (same as with real browsers) 
     // ignore these errors 
     webClient.getOptions().setThrowExceptionOnScriptError(false); 

     HtmlPage page = (HtmlPage) webClient.getPage("https://186.springfield.k12.il.us/IS3/"); 
     // System.out.println(page.asXml()); 

     // form has no name, we use the first one 
     HtmlForm form = page.getForms().get(0); 
     form.getInputByName("loginuseridvar").type("myusername"); 

     // there seem to be some (async) magic that clears the password field 
     // force this magic and wait until done otherwise the js will clear the password 
     // after we typed it in and before the click will be processed 
     form.getInputByName("password").focus(); 
     webClient.waitForBackgroundJavaScript(100); 
     form.getInputByName("password").type("mypassword"); 

     page = form.getInputByName("login").click(); 
     webClient.waitForBackgroundJavaScript(1000); 

     System.out.println(page.asXml()); 
    } 

希望這些意見將幫助你有點明白了是怎麼回事。因爲我沒有真實賬戶,所以我只能測試錯誤情況。 如果你仍然有問題,你必須通過私人郵件向我發送一些憑證。

BTW:頁面本身有一些缺陷(破解的javascript,XHTML語法錯誤)