2016-12-18 6 views
0

Ich versuche eine Website zu analysieren, die eine Anmeldung erfordert. Wenn ich mich auf der Anmeldeseite (https://backoffice.holidayinsider.com/backoffice2/login) im Browser anmelde, werde ich automatisch zu https://backoffice.holidayinsider.com/backoffice2/login weitergeleitet.JSOUP Automatisch auf eine Website anmelden

Also zuerst versuche ich die Anmeldung mit Java zu automatisieren. Mein Ansatz wird durch diese stackoverflow response motiviert. Der Code, den ich verwende, ist die folgende:

package Login; 
import org.jsoup.Connection; 
import org.jsoup.Jsoup; 
import org.jsoup.nodes.Document; 
import java.io.IOException; 
import java.util.Map; 
public class DoLogin { 
    public static void main(String[] args) 
    { 

     try { 

      Connection.Response loginForm = Jsoup.connect("https://backoffice.holidayinsider.com/backoffice2/login") 
       .method(Connection.Method.GET) 
       .execute(); 

      Connection.Response mainPage = Jsoup.connect("https://backoffice.holidayinsider.com/backoffice2") 
       .data("username", "myusername") 
       .data("password", "mypass") 
       .cookies(loginForm.cookies()).execute(); 
      System.out.println(mainPage.parse()); 

      Map<String, String> cookies = mainPage.cookies(); 

      Document evaluationPage = Jsoup.connect("https://backoffice.holidayinsider.com/backoffice2/") 
       .cookies(cookies) 
       .execute().parse(); 
      System.out.println(evaluationPage); 


     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } 
} 

Es scheint die Login als Statuscode arbeitet, ist 200. Das Problem ist jetzt, wenn ich Startseite drucken, wie es scheint es nach wie vor auf Login-Seite ist. Was kann der Grund sein? Vielen Dank im Voraus für jede Hilfe oder Anregung.

Antwort

1

Während Ihre Anmeldung benötigen Sie POST-Methode hinzufügen:

 Connection.Response loginForm = Jsoup.connect("https://backoffice.holidayinsider.com/backoffice2/login") 
      .method(Connection.Method.GET) 
      .execute(); 

     Connection.Response mainPage = Jsoup.connect("https://backoffice.holidayinsider.com/backoffice2/login") 
      .data("username", "myusername") 
      .data("password", "mypass") 
      .cookies(loginForm.cookies()) 
      .followRedirects(true) 
      .method(Connection.Method.POST).execute(); 
     System.out.println(mainPage.parse()); 

     Map<String, String> cookies = mainPage.cookies(); 

     Document evaluationPage = Jsoup.connect("https://backoffice.holidayinsider.com/backoffice2/") 
      .cookies(cookies) 
      .get(); 
     System.out.println(evaluationPage); 
Verwandte Themen