Comment résoudre les erreurs de soumission du formulaire de connexion dans Jsoup en raison de paramètres manquants ?

Linda Hamilton
Libérer: 2024-10-20 13:18:02
original
1063 Les gens l'ont consulté

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

Problème avec la soumission du formulaire de connexion à l'aide de Jsoup

Le problème avec le code fourni réside dans son incapacité à se connecter avec succès au site Web malgré l'utilisation correcte identifiants de connexion. Le code récupère actuellement la page de connexion mais ne parvient pas à exécuter une connexion réussie.

Le problème fondamental est que le processus de soumission nécessite des paramètres supplémentaires au-delà du nom d'utilisateur, du mot de passe et des cookies. Plus précisément, le site Web nécessite les valeurs "VIEWSTATE" et "EVENTVALIDATION".

Solution

Pour résoudre ce problème, ces valeurs supplémentaires doivent être récupérées à partir de la réponse du premier Requête GET et incluse dans la requête POST. Le code suivant montre comment obtenir et incorporer ces valeurs :

<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>
Copier après la connexion

De plus, il est recommandé de définir le champ userAgent dans les requêtes GET et POST pour garantir que vous recevez les mêmes réponses du serveur qu'avec un navigateur. .

Pour activer la fonctionnalité "Se souvenir de moi" lors de la connexion, intégrez la ligne suivante dans la requête POST :

<code class="java">.data("myLogin$myEnableAutoLogin", "on")</code>
Copier après la connexion

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!

source:php
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal