2013-11-24 11 views
7

Ich versuche, auf eine Website mit JSoup Post-Methode einzuloggen. Ich habe ein paar Beispiele gesehen, aber keiner arbeitet an mir. Ich versuche, um sich einzuloggen: http://ug.technion.ac.il/Tadpis.html dass für i den folgenden Code haben:Anmelden einer Website mit JSoup Post-Methode

String url = "http://ug.technion.ac.il/Tadpis.html"; 
doc = Jsoup.connect(url).data("userid", "my_user_id") 
       .data("password", "my_password").data("function","signon").data("submit", "Signon").post(); 

Anscheinend einige Daten fehlt mir (ich weiß nicht, welche). Eine andere Sache, die mir nicht klar genug ist, ist die URL. Wenn der HTML-Code der oben genannten URL examinig kann ich diese Zeile sehen:

<form action="http://techmvs.technion.ac.il:80/cics/wmn/wmngrad?aapmlkwi&ORD=1&s=1" method="POST" name="SignonForm" 

, das eine andere URL von der oben angegebenen ist. Welche von diesen soll ich als URL-Parameter für die Methode "connect" verwenden?

Danke!

Antwort

5

Die URL, die Sie in der Adressleiste sehen, ist nicht diejenige, an die Sie die Anfrage stellen möchten. Sie sollten die Anfrage an die zweite URL senden, die Sie im Formular sehen.

//With this you login and a session is created 
    Connection.Response res = Jsoup.connect("http://techmvs.technion.ac.il:80/cics/wmn/wmngrad?aapmlkwi&ORD=1&s=1") 
     .data("username", "myUsername", "password", "myPassword") 
     .method(Method.POST) 
     .execute(); 

//This will get you cookies 
Map<String, String> loginCookies = res.cookies(); 

//Here you parse the page that you want. Put the url that you see when you have logged in 
Document doc = Jsoup.connect("urlYouNeedToBeLoggedInToAccess") 
     .cookies(loginCookies) 
     .get(); 

P.S. Ich glaube, dass http://techmvs.technion.ac.il:80/cics/wmn/wmngrad genug ist. Sie benötigen die zusätzlichen GET-Parameter nicht, aber überprüfen Sie es selbst.