Heim > Backend-Entwicklung > PHP-Tutorial > Wie behebt man Probleme bei der Übermittlung von Jsoup-Anmeldeformularen aufgrund fehlender Parameter VIEWSTATE und EVENTVALIDATION?

Wie behebt man Probleme bei der Übermittlung von Jsoup-Anmeldeformularen aufgrund fehlender Parameter VIEWSTATE und EVENTVALIDATION?

Mary-Kate Olsen
Freigeben: 2024-10-20 13:17:30
Original
299 Leute haben es durchsucht

How to Resolve Jsoup Login Form Submission Issues Due to Missing VIEWSTATE and EVENTVALIDATION Parameters?

Fehlerbehebung bei Problemen bei der Übermittlung des Jsoup-Anmeldeformulars

Problembeschreibung:

Trotz der Verwendung korrekter Anmeldeinformationen wird der unten veröffentlichte Jsoup-Code angezeigt Die Anmeldung bei der Zielwebsite schlägt fehl und zeigt stattdessen den HTML-Code der Anmeldeseite an.

<code class="java">public void connect() {

    try {
        Connection.Response loginForm = Jsoup.connect("https://www.capitaliq.com/CIQDotNet/Login.aspx/login.php")
                .method(Connection.Method.GET)
                .execute();

        org.jsoup.nodes.Document document = Jsoup.connect("https://www.capitaliq.com/CIQDotNet/Login.aspx/authentication.php")
                .data("cookieexists", "false")
                .data("username", "myUsername")
                .data("password", "myPassword")
                .cookies(loginForm.cookies())
                .post();
        System.out.println(document);
    } catch (IOException ex) {
        Logger.getLogger(WebCrawler.class.getName()).log(Level.SEVERE, null, ex);
    }
}</code>
Nach dem Login kopieren

Lösung:

Zusätzlich zu Benutzername, Passwort und Cookies Die Zielwebsite erfordert zwei zusätzliche Werte für die Anmeldung: VIEWSTATE und EVENTVALIDATION. Um diese Werte zu erhalten:

<code class="java">Document doc = loginForm.parse();
Element e = doc.select("input[id=__VIEWSTATE]").first();
String viewState = e.attr("value");
e = doc.select("input[id=__EVENTVALIDATION]").first();
String eventValidation = e.attr("value");</code>
Nach dem Login kopieren

Fügen Sie dann diese Werte zur Post-Anfrage hinzu (Reihenfolge spielt keine Rolle):

<code class="java">org.jsoup.nodes.Document document = (org.jsoup.nodes.Document) Jsoup.connect("https://www.capitaliq.com/CIQDotNet/Login.aspx/authentication.php").userAgent("Mozilla/5.0")               
            .data("myLogin$myUsername", "MyUsername")
            .data("myLogin$myPassword, "MyPassword")
            .data("myLogin$myLoginButton.x", "22")                   
            .data("myLogin$myLoginButton.y", "8")
            .data("__VIEWSTATE", viewState)
            .data("__EVENTVALIDATION", eventValidation)
            .cookies(loginForm.cookies())
            .post();</code>
Nach dem Login kopieren

Um die Funktion „An mich erinnern“ zu aktivieren, fügen Sie hinzu :

<code class="java">.data("myLogin$myEnableAutoLogin", "on")</code>
Nach dem Login kopieren

Mit diesen Änderungen sollte die Anmeldung nun wie erwartet erfolgreich sein.

Das obige ist der detaillierte Inhalt vonWie behebt man Probleme bei der Übermittlung von Jsoup-Anmeldeformularen aufgrund fehlender Parameter VIEWSTATE und EVENTVALIDATION?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage