Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法使用jsoup登录到网站_Java_Android_Jsoup - Fatal编程技术网

Java 无法使用jsoup登录到网站

Java 无法使用jsoup登录到网站,java,android,jsoup,Java,Android,Jsoup,我正在尝试登录。 以下是我迄今为止尝试过的,但似乎不起作用: try{ Connection.Response login = Jsoup.connect("login_url").method(Connection.Method.GET).execute( Connection.Response doc = Jsoup.connect("https://ecampus.psgtech.ac.in/studzone/") .data("Tx

我正在尝试登录。
以下是我迄今为止尝试过的,但似乎不起作用:

try{
       Connection.Response login = Jsoup.connect("login_url").method(Connection.Method.GET).execute(
       Connection.Response doc = Jsoup.connect("https://ecampus.psgtech.ac.in/studzone/")
              .data("Txtstudid","id")
              .data("TxtPasswd","password")
              .data("btnlogin","Login")
              .userAgent("Mozilla/5.0 (Windows NT 6.1; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0")
              .method(Connection.Method.POST).execute(); //doesn't seem to work.
       Document docs=Jsoup.connect("https://ecampus.psgtech.ac.in/studzone/AttWfPercView.aspx/") //after login
                                .cookies(doc.cookies())
                                .userAgent("Mozilla/5.0 (Windows NT 6.1; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0").get();
       test=docs.title();
   }catch (IOException e){
       test=e.getMessage();
   }
   out.setText(docs.title());
我做错了什么

编辑1 最后,在TDG的帮助下,我发现了这个缺陷

对于寻求解决方案的用户,实际问题是您没有传递足够的数据来登录

步骤1:进入Chrome加载页面,然后,Options>Tools>Developer Tools

步骤2:在控制台类型中 $(“输入”) 这将返回表单中所需的所有输入 步骤3:像这样将数据附加到响应中

Jsoup.connect("login_url")
              .data("username","user")
              .data("password","password")
              .data("btnlogin","Login")
              .data("id_of_the_data_required","value")
              .data("...and so on like this...)
              .userAgent("Mozilla/5.0 (Windows NT 6.1; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0")
              .method(Connection.Method.POST).execute(); 
第4步:抓取网页的html代码,并确定是否必须使用POSTGET方法,以及建议使用userAgent的方法

步骤5:一旦您发现登录事件成功。使用响应名称。cookies()转到页面中的其他URL


希望这有帮助。

Q:为什么在
get
请求中发送“btnlogin”作为参数?答:因为您已经用浏览器的开发工具检查了
post
请求,并对其进行了锯切。问:那么为什么不发送所有其他参数,比如uu EVENTTARGET、u EVENTVALIDATION等等?但是必须随u EVENTTARGET和u EVENTVALIDATION一起传递的值是什么,这正是我所要做的。你可以在第一个
get
请求的响应中找到它们。我对jsoup不太熟悉。那么,你能帮助代码找到它们吗?看这里,它非常相似-Q:为什么在
get
请求中发送“btnlogin”作为参数?答:因为您已经用浏览器的开发工具检查了
post
请求,并对其进行了锯切。问:那么为什么不发送所有其他参数,比如uu EVENTTARGET、u EVENTVALIDATION等等?但是必须随u EVENTTARGET和u EVENTVALIDATION一起传递的值是什么,这正是我所要做的。你可以在第一个
get
请求的响应中找到它们。我对jsoup不太熟悉。那么,你能帮我用代码找到它们吗?看这里,它非常相似-