Résoudre les problèmes de soumission du formulaire de connexion à l'aide de Jsoup
Malgré la soumission des informations de connexion correctes, le code fourni ne parvient pas à authentifier les utilisateurs et affiche la page de connexion, indiquant des problèmes de mise en œuvre potentiels.
Un aspect essentiel manquant dans le code est l'inclusion des valeurs VIEWSTATE et EVENTVALIDATION. Ces valeurs sont requises par le site Web pour la connexion et peuvent être récupérées à partir de la réponse de la requête GET initiale :
<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>
L'intégration de ces valeurs dans la requête POST avec le nom d'utilisateur et le mot de passe garantit une connexion réussie :
<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>
De plus, l'ajout du champ userAgent aux requêtes GET et POST simule un navigateur et garantit la cohérence avec la réponse reçue lors d'une connexion manuelle.
En option, le champ Se souvenir de moi peut être activé par en ajoutant la ligne suivante à la requête POST :
<code class="java">.data("myLogin$myEnableAutoLogin", "on")</code>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!