Question

Je veux créer une application (dans .NET) qui remplit et soumet un formulaire (sur un site Web ASP.NET).

Ces applications doivent lire la page, trouver les champs (entrées), extraire le nom / ID des champs que je souhaite le remplir et soumettre la page au serveur.

Je ne veux pas d'une application qui détient un contrôle WebBrowser et automatise la navigation dessus!

Ce que j'ai: j'ai la pièce qui télécharge le HTML, j'ai la pièce qui trouve les champs et extrait leurs noms / ID.

Ce dont j'ai besoin: un moyen de soumettre le formulaire au serveur (PUBLIER, ne pas obtenir).

Sur le HTML de la page, la soumission est effectuée par JavaScript, quelque chose comme ceci:

javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("Button1", "", true, "", "", false, false))

La question est: comment se soumettre dans ce cas?

Était-ce utile?

La solution

Vous pouvez utiliser le HttpWebRequest/HttpWebResponse Objets à envoyer / recevoir des demandes HTTP à un serveur. Lorsque vous obtenez la réponse, recherchez les différents INPUT champs que vous souhaitez modifier et créer un bloc de données de demande de demande avec les différents champs, comme

firstname=Joe&lastname=Doe&...

Ensuite, envoyez-le en tant que poste de poste. Vous devez également créer un ensemble approprié d'en-têtes pour imiter un véritable navigateur envoyant la demande, sinon le site peut refuser de le gérer correctement.

Vous pouvez utiliser Fiddler pour accéder d'abord au site et enregistrer les demandes dans Firefox, puis utiliser des informations à partir de ces demandes pour construire votre HttpWebRequest objets.

HttpWebRequest Fonctionne dans des modes synchrones et asynchrones, vous pouvez donc télécharger une page à l'aide de quelques lignes de code, soit contrôler l'intégralité du processus de téléchargement.

Autres conseils

Vous pouvez simplement vous soumettre en utilisant le javascript:

<script type="text/javascript">
  document.forms["your_form_id"].submit();
</script>

Vous pouvez mettre JavaScript après que la page charge de soumettre le formulaire.

document.forms[0].submit();

En supposant que vous n'avez qu'un seul formulaire sur la page, sinon vous pouvez mettre le nom du formulaire en guillemets à l'intérieur du forms[] supports.

Ai-je raison de dire que la page avec le formulaire ne appartient pas à votre site Web et que vous lisez un formulaire sur un site externe?

Si vous avez tous les champs, vous ne pouvez pas également lire l'attribut «Action» sur la balise de formulaire et effectuer un message au même endroit, avec toutes les clés / valeurs que vous avez déjà?

Vous pouvez utiliser HttpWebRequest Pour ce faire dans le code côté serveur, et envoyez simplement les données du post de cette façon.

http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.aspx

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top