5

我正在尝试使用 HtmlUnit 登录 Facebook 页面并查看其 HTML 内容。我正在尝试通过 HtmlUnit 填写登录凭据,但单击提交按钮时看不到会话正在执行。

在 htmlunit 会话管理类上找不到太多内容。我还附上了我目前用来尝试这个问题的代码。任何帮助表示赞赏!

WebClient webClient = new WebClient();
HtmlPage page1 = webClient.getPage("https://www.facebook.com");
List<HtmlForm> listF = page1.getForms();
HtmlForm form = null;
for(int i=0; i<listF.size(); i++)
{
    if(listF.get(i).getId().equals("login_form"))
    {
        form = listF.get(i);
        }
}
HtmlTextInput uName = form.getInputByName("email");
HtmlPasswordInput passWord = form.getInputByName("pass");
HtmlSubmitInput button = form.getInputByValue("Log In");
uName.setValueAttribute(FACEBOOK_UNAME);
passWord.setValueAttribute(FACEBOOK_PASS);
HtmlPage page2 = button.click();
4

2 回答 2

10

找到了答案。在开始获取网页之前启用 cookie。有用。添加了以下代码

WebClient webClient = new WebClient();
CookieManager cookieMan = new CookieManager();
cookieMan = webClient.getCookieManager();
cookieMan.setCookiesEnabled(true);
于 2012-10-26T11:05:37.470 回答
0

另一个建议是,如果您尝试在 HtmlUnit 中恢复 HTTP 会话,而不是使用webClient.getCookieManager().addCookie(cookie);,请改用:

webClient.addCookie("cookieName=cookieValue", URL, null);
于 2019-04-22T18:27:20.473 回答