2014-06-29 41 views
0

我在这里发布,因为我在我的智慧结束。我使用Jsoup发布用于登录的HTML数据。奇怪的是,我可以在表单中输入数据,按登录,并从网站获得回应。但是,即使使用正确的登录凭据,该网站也告诉我,我无法登录。我有几个想法,为什么这是这样的:发布一个JSOUP文档登录到网站

1)HTTPS://在我试图连接的URL之前,我读过,有时Jsoup在验证SSL证书时遇到了问题。

2)我知道cookies是一个问题。在登录本网站后,当我在Chrome上使用开发人员选项时,当我打印出Connection.Response的Cookie时,就会出现一个Cookie。

3)当我尝试登录后使用Jsoup打印出生成的文档时,出现了一个奇怪的“注意:您的数据没有丢失,使用SSL安全登录后会发布”。我不知道这意味着什么,显然Google也没有。

为了保持安全性,我已经删除了我要连接的实际URL,但下面的代码仍应该具有某种意义。

 String encodeUser = URLEncoder.encode(username, "UTF-8"); 
     String encodePass = URLEncoder.encode(password, "UTF-8"); 

     Connection.Response loginForm = Jsoup.connect("https://----") 
       .method(Method.GET) 
       .userAgent("Mozilla/5.0") 
       .execute(); 

     Log.v("Miles", String.valueOf(loginForm.cookies())); 

     Document homeDoc = Jsoup.connect("--------") 
       .cookie("T3Version", loginForm.cookie("T3Version")) 
       .data("_name", encodeUser, "_pass", encodePass, "_login", "in") 
       .referrer("https://web.wm.edu/studenthappenings/preview.php") 
       .userAgent("Mozilla/5.0") 
       .method(Connection.Method.POST) 
       .timeout(1000) 
       .post(); 

     Log.v("Miles", String.valueOf(loginForm.cookies())); 

        System.out.println(homeDoc.body()); 
      if (homeDoc.body().html().contains("Cannot perform login")){ 
       Log.v("Miles", "Cannot perform login"); 
      } 

它总是进入,如果循环和打印日志。

帮助?我会很乐意提供更多信息,因为在为我的愚蠢问题设计解决方案时可能需要它。

回答

0

最终将jsoup归为html报废和读取数据的唯一目的,使用HttpClient等登录到网站。 Jsoup很棒,但它并不令人惊叹。