2016-12-11 6 views
0

Momentan versuche ich mich programmatisch in diese Nachrichtenwebseite einzuloggen, aber meine Überprüfung bleibt erhalten, dass ich nicht auf der Website eingeloggt bin. Ich weiß wirklich nicht, was oder was falsch gelaufen ist. Ich bin seit Tagen hier feststeckt.Login nicht erfolgreich Jsoup - Android

Website: http://www.malaysiakini.com/en

Network activities

Network activities

Mein Quellcode

String userAgent = System.getProperty("http.agent"); 

Connection.Response response = Jsoup.connect("http://www.malaysiakini.com/") 
       .userAgent(userAgent) 
       .method(Connection.Method.GET) 
       .execute(); 

Document doc = Jsoup.connect("http://login2.mkini.net/v2/login-exchange") 
       .userAgent(userAgent) 
       .cookies(response.cookies()) 
       .data("platform","desktop") 
       .data("next_url","http://www.malaysiakini.com/en") 
       .data("version","1") 
       .data("keeplogin","1") 
       .data("language","en") 
       .data("callback_url","http://www.malaysiakini.com/login/en/callback") 
       .data("username", "ianchai") 
       .data("password", "sinsoi") 
       .data("lkeeplogin","on") 
       .post(); 

     String cookie = response.cookie("__cfduid"); 

     Log.d("Login Data "," Cookie : " + cookie); 

     Thread.sleep(0); 

     Document document = Jsoup.connect("http://www.malaysiakini.com/") 
       .cookie("__cfduid",cookie) 
       .get(); 

     Log.d("Login Data "," Document : " + document); 

     Elements loginData = document.select("logindata"); 

     if(!loginData.isEmpty()){ 
      Log.d("Login Data "," Fail : " + loginData); 
     } 

     else 
      Log.d("Login Data "," Success : " + loginData); 

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

bearbeiten

Ich habe also mit einer anderen Website versucht herauszufinden, ob es sich um ein Codeproblem oder die Website selbst handelt und mein Code auf der anderen Website wie vorgesehen funktioniert. Aber nicht für diese Nachrichtenwebsite. Gibt es etwas, was ich vermisse oder übersehen habe?

Edit 2

unter meinem Code auf die Antwort geändert, aber noch nicht

+0

JSoup.connect gibt ein Connection-Objekt zurück, mit dem Sie den UserAgent festlegen können, den Sie in Ihrem Image sehen. Möglicherweise müssen Sie auch versuchen, mit dem Cookie zu arbeiten. – ProgrammersBlock

Antwort

0

Sie funktioniert hat es auf diese Weise zu tun:
Erste - Verbindung zu der Website und die Cookies erhalten -

Connection.Response response = Jsoup.connect("http://www.malaysiakini.com/") 
      .userAgent("Mozilla/5.0 (Windows NT 6.1; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0") 
      .method(Method.GET) 
      .execute(); 

Jetzt hat response Informationen, die Sie benötigen. Jetzt können Sie die GET-Anfrage mit Ihren Parametern senden -

Document doc = Jsoup.connect("http://login2.mkini.net/v2/login-exchange") 
      .userAgent("Mozilla/5.0 (Windows NT 6.1; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0") 
      .cookies(response.cookies()) 
      .data("platform","desktop") 
      .data("next_url","http://www.malaysiakini.com/en") 
      .data("version","1") 
      .data("keeplogin","1") 
      .data("language","en") 
      .data("callback_url","http://www.malaysiakini.com/login/en/callback") 
      .data("username", "username") 
      .data("password", "password") 
      .data("lkeeplogin","on") 
      .post(); 

Ein paar wichtige Punkte:

  • Ich konnte nicht den Code überprüfen, da ich einen Benutzer nicht für diese Website.
  • Wenn Sie die Parameter für die Anforderung Post senden, stellen Sie sicher, dass Sie sie kopieren und aus dem Browser einfügen, da selbst ein kleiner Tippfehler dazu führen kann, dass sie nicht funktioniert.
  • Dieser Code ist für Java Desktop-Implementierung. Für Android möchten Sie vielleicht einen anderen Benutzeragenten verwenden und natürlich müssen Sie dazu AsyncTask oder Thread verwenden.
+0

Hallo. Danke für die Antwort, aber es hat nicht funktioniert. Es hat nicht funktioniert, als ich versuchte, Daten von der Webseite abzurufen. Ich habe sichergestellt, dass alle meine Parameter korrekt waren, verwenden Sie den Systemstandard-Agent und es funktioniert immer noch nicht. –

+0

Versuchen Sie, es als Desktop-App auszuführen und zu debuggen. Fügen Sie 'System.out.println (" status "+ response.statusCode()) hinzu; \t \t System.out.println (response.cookies()); 'nach der' GET' Anfrage zu sehen, ob Sie den Status 200 und die Cookies erhalten. – TDG

Verwandte Themen