2010-07-28 10 views
4

Je serais très heureux si quelqu'un pouvait me montrer un bon exemple de la façon d'envoyer des données POST avec la méthode Navigate, disponible via SHDocVw.IWebBrowserApp.IWebBrowserApp.Navigate() Comment envoyer des données de poste

Considérant par exemple.

que la page était que nous devrions aller est: http://example.com/check.php

Et doit envoyer les valeurs de deux champs de saisie nommés: nom d'utilisateur et mot de passe.

EDIT

Je tente avec mon C# App pour utiliser la version native Internet Explorer 7 ou plus, disponible sous Windows OS, d'envoyer une requête HTTP à une URL spécifique, en passant par la méthode POST le nom d'utilisateur et le mot de passe d'un utilisateur vers une page côté serveur qui gérerait la réponse HTTP. Avec et la méthode IWebBrowserApp, je suis capable d'ouvrir une nouvelle fenêtre/instance d'Internet Explorer et de l'envoyer à une page spécifique (locale ou sur le web), et si spécifié, d'envoyer des données POST et des en-têtes personnalisés.

Mais le principal problème c'est que je ne sais pas comment écrire mes données dans une requête POST à ​​être porté par le navigateur.

J'apprécierais l'aide.

+1

: il n'y a pas de raison de mettre "C#" à la fois dans le titre et dans les balises. S'il vous plaît laissez juste cela dans les balises. –

+1

@Jonh Saunders: Bien sûr, avez-vous des suggestions sur mon problème? –

Répondre

9

J'ai trouvé comment commander IE pour ouvrir une page Web et envoyer des données POST.

  • Ajouter une référence COM nommé Microsoft Internet Explorer Controls au projet.

  • Ensuite, créez le post string avec le champ et sa valeur séparée par &, puis le convertir en un stringbyte array.

  • Et à la fin juste dû demander IE pour naviguer vers le url, et également envoyer les données poste converti en byte array, puis ajoutez le même en-tête que son ajouté lorsque nous soumettons un formulaire.

va ici:

using SHDocVw; // Don't forget 

InternetExplorer IEControl = new InternetExplorer(); 
IWebBrowserApp IE = (IWebBrowserApp)IEControl; 
IE.Visible = true; 

// Convert the string into a byte array 
ASCIIEncoding Encode = new ASCIIEncoding(); 
byte[] post = Encode.GetBytes("username=fabio&password=123"); 

// The destination url 
string url = "http://example.com/check.php"; 

// The same Header that its sent when you submit a form. 
string PostHeaders = "Content-Type: application/x-www-form-urlencoded"; 

IE.Navigate(url, null, null, post, PostHeaders); 

REMARQUE:

Pour essayer si cela fonctionne. N'oubliez pas que la page secondaire de votre serveur doit indiquer les champs Post: nom d'utilisateur et mot de passe.

code PHP Exemple:

<?php 
echo $_POST['username']; 
echo " "; 
echo $_POST['password']; 
?> 

ASP Exemple de code:

<% 
response.write(Request.Form("username")) 
response.write(" " & Request.Form("password")) 
%> 

Et la page afficherait quelque chose comme ceci:

fab io 123