2016-07-15 9 views
1

Ich habe alle Eingabe-Tags Felder Name aus der Quelle und versuchte alle möglichen Möglichkeiten mit jSoup zu verbinden, aber jedes Mal die Ausgabe HTML-Seite in log.e angezeigt wird die gleiche Login-Seite.Login auf der Website mit jsoup in Android zurück Login-Seite anstelle der Startseite

protected Void doInBackground(Void... params) { 
    try { 

    Connection.Response loginForm = Jsoup.connect("http://adsl.yemen.net.ye/en/login.aspx") 
       // .userAgent("Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36") 
       .method(Connection.Method.GET) 
       .execute(); 
     loginForm= Jsoup.connect("http://adsl.yemen.net.ye/en/login.aspx") 
       .data("ctl00$ContentPlaceHolder1$loginframe$UserName", "MASALAHI2010") 
       .data("ctl00$ContentPlaceHolder1$loginframe$Password", "MAMAM") 
       // .data("ctl00$ContentPlaceHolder1$loginframe$RememberMe","true") 
       .data("ctl00$ContentPlaceHolder1$loginframe$LoginButton", "Sign In") 
       .data("__LASTFOCUS", "") 
       .data("__EVENTTARGET", "") 
       .data("__EVENTARGUMENT","") 
       .data("__VIEWSTATE","/wEPDwULLTE4NzkxODYxNTIPZBYCZg9kFgICAw9kFgQCAQ9kFgQCAw8PFgIeB1Zpc2libGVoZGQCBQ8PFgIfAGhkZAIDD2QWCAIBDzwrAAoBAA8WAh4IVXNlck5hbWUFDE1BU0FMQUhJMjAxMGQWAmYPZBYEAgMPDxYGHghSZWFkT25seWceBFRleHQFDE1BU0FMQUhJMjAxMB4HRW5hYmxlZGhkZAIPDxAPFgIeB0NoZWNrZWRoZGRkZAIFDw8WAh8AaGRkAgcPDxYCHwBoZGQCCQ8PFgIfAGhkFgICBQ8PFgIfBGhkZBgBBR5fX0NvbnRyb2xzUmVxdWlyZVBvc3RCYWNrS2V5X18WAQUvY3RsMDAkQ29udGVudFBsYWNlSG9sZGVyMSRsb2dpbmZyYW1lJFJlbWVtYmVyTWU9Ui0fNjQuNhCWW2dC7yFhNqTbNcJm7Q+EVewP9rv8Yg==") 
       .data("__VIEWSTATEGENERATOR","EE376E4E") 
       .data("__EVENTVALIDATION","/wEWBQKP+oCbCALfq6j2AQKR/OC4DgKj1+LbCwLs5ZY/pEGu3qyHck5jsPKXcvY2hzZwLeCSbXeQ4TprZKrhv7E=") 
       .userAgent("Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36") 
       .cookies(loginForm.cookies()) 



       .method(Connection.Method.POST) 
       .execute(); 

     Document homePage = Jsoup.connect("http://adsl.yemen.net.ye/en/user_main.aspx") 
       .cookies(loginForm.cookies()) 
       .get(); 




     Log.e("test", homePage.html()); 

    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

    return null; 
} 

Antwort

1

Sie sind fast da, nur ein paar kleinere Dinge:

Sie das Anmeldeformular Daten sehen, die Sie als Benutzername und Passwort andere senden müssen (z __VIEWSTATE, __EVENTVALIDATION und mehr)? Diese müssen dynamisch abgerufen werden. Ich glaube, sie sind eindeutige Werte, die Ihnen gesendet werden, wenn Sie zum ersten Mal auf die Anmeldeseite gehen.

Also, was Sie tun müssen, ist, anstatt POST feste Werte, müssen Sie sie von der ersten loginForm erhalten, die Sie erhalten, so wie Sie die Cookies aus dem ersten Login-Formular setzen.

Für weitere Details habe ich eine umfassende Anleitung geschrieben, wie Sie sich auf Websites mit Jsoup here anmelden, ich glaube, es wird Ihnen sehr helfen.

+0

Ich habe das gleiche Tutorial liknk Sie haben mich gesendet. Könntest du bitte erklären, wie dynamisch du den Authentizitätstoken abgerufen hast? WENN ja dann wat das #login in der Syntax dieses Abrufs? –

+0

Ich habe auch den dynamischen Attributwert ausprobiert, aber es gibt immer noch dieselbe Anmeldeseite zurück –

0

Jsoup.connect (URL) überschreitet.Verfahren (Method.GET) .followRedirects (false) // < - hat den Trick .cookie (session_key, sessionId) .execute();