2016-08-04 40 views
1

Ich habe ein Problem mit der folgenden Testmethode für die Authentifizierung auf der Website der Universität. Ich benutze Jsoup und ich kann die Cookies (jsessionid) nicht anmelden. Das Verfahren ist folgendes:Wie setze ich den jsessionid-Cookie mit jsoup?

public static void Authentication() { 

    String strURL = "https://www.studenti.ict.uniba.it/esse3/auth/Logon.do"; 
    String strUserId = "prova"; 
    String strPasword = "prova"; 

    String authString = strUserId + ":" + strPasword; 

    String encodedString = new String(Base64.encodeBase64(authString.getBytes())); 

    try{ 

     Response response = Jsoup.connect(strURL) 
       .header("Authorization", "Basic " + encodedString) 
       .method(org.jsoup.Connection.Method.GET) 
       .timeout(30000) 
       .execute(); 

     System.out.println(response.parse()); 

     System.out.println("Autenticato"); 

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

Antwort

1

Sie das Cookie abrufen kann eine weitere Anforderung an die Heimat der Website zu erstellen.

package com.github.davidepastore.stackoverflow38768839; 

import java.io.IOException; 

import org.jsoup.Connection.Response; 
import org.jsoup.Jsoup; 

/** 
* Stackoverflow 38768839 answer. 
* 
*/ 
public class App { 

    private static final String COOKIE_NAME = "JSESSIONID"; 

    public static void main(String[] args) throws IOException { 
     // Step 1 - Get the cookie 
     String homeURL = "https://www.studenti.ict.uniba.it/esse3/Home.do"; 
     Response response = Jsoup.connect(homeURL).execute(); 
     String jsessionid = response.cookie(COOKIE_NAME); 
     System.out.println(COOKIE_NAME + " cookie: " + jsessionid); 

     // Step 2 - Try to login 
     String strURL = "https://www.studenti.ict.uniba.it/esse3/auth/Logon.do"; 
     String strUserId = "prova"; 
     String strPasword = "prova"; 

     String authString = strUserId + ":" + strPasword; 

     String encodedString = new String(Base64.encodeBase64(authString 
       .getBytes())); 

     try { 

      response = Jsoup.connect(strURL) 
        .header("Authorization", "Basic " + encodedString) 
        .cookie(COOKIE_NAME, jsessionid) 
        .method(org.jsoup.Connection.Method.GET).timeout(30000) 
        .execute(); 

      System.out.println(response.parse()); 

      System.out.println("Autenticato"); 

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

Vielen Dank. Die Hilfe für den Keks war sehr gut. Jetzt ist das Problem, dass es sich nicht anmeldet und mir Fehler 401 gibt, obwohl die Zugangsdaten korrekt sind. Der Fehler ist in der "Ausführen" -Funktion. –

+0

@ VincEnzo Die Sache ist, dass ich es nicht testen kann, wenn ich nicht die Anmeldeinformationen habe. –

+0

Sie können mir Ihre Emailadresse hinterlassen? Sie senden die Login-Daten –