Heim >Backend-Entwicklung >PHP-Tutorial >Wie behebe ich Fehler bei der Übermittlung von Anmeldeformularen in Jsoup aufgrund fehlender Parameter?
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!