Heim >Backend-Entwicklung >PHP-Tutorial >Wie behebe ich Fehler bei der Übermittlung von Anmeldeformularen in Jsoup aufgrund fehlender Parameter?

Wie behebe ich Fehler bei der Übermittlung von Anmeldeformularen in Jsoup aufgrund fehlender Parameter?

Linda Hamilton
Linda HamiltonOriginal
2024-10-20 13:18:021070Durchsuche

How to Resolve Login Form Submission Errors in Jsoup Due to Missing Parameters?

Probleme bei der Übermittlung des Anmeldeformulars mit Jsoup

Das Problem mit dem bereitgestellten Code liegt darin, dass er sich trotz korrekter Verwendung nicht erfolgreich auf der Website anmelden kann Anmeldedaten. Der Code ruft derzeit die Anmeldeseite ab, führt jedoch keine erfolgreiche Anmeldung aus.

Das grundlegende Problem besteht darin, dass für den Übermittlungsprozess zusätzliche Parameter erforderlich sind, die über den Benutzernamen, das Passwort und die Cookies hinausgehen. Insbesondere erfordert die Website die Werte „VIEWSTATE“ und „EVENTVALIDATION“.

Lösung

Um dieses Problem zu beheben, müssen diese zusätzlichen Werte aus der Antwort des ersten abgerufen werden GET-Anfrage und in der POST-Anfrage enthalten. Der folgende Code zeigt, wie diese Werte abgerufen und integriert werden:

<code class="java">Document loginForm = Jsoup.connect("https://www.capitaliq.com/CIQDotNet/Login.aspx/login.php")
                .method(Connection.Method.GET)
                .execute()
                .parse();

String viewState = loginForm.select("input[id=__VIEWSTATE]").first().attr("value");
String eventValidation = loginForm.select("input[id=__EVENTVALIDATION]").first().attr("value");

org.jsoup.nodes.Document 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>

Darüber hinaus wird empfohlen, das Feld „userAgent“ sowohl in GET- als auch in POST-Anfragen festzulegen, um sicherzustellen, dass Sie dieselben Serverantworten erhalten wie mit einem Browser .

Um die Funktion „Angemeldet bleiben“ beim Anmelden zu aktivieren, fügen Sie die folgende Zeile in die POST-Anfrage ein:

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

Das obige ist der detaillierte Inhalt vonWie behebe ich Fehler bei der Übermittlung von Anmeldeformularen in Jsoup aufgrund fehlender Parameter?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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