Remplir un formulaire sur une page distante et le valider [Résolu]

yannovitch78 15 Messages postés vendredi 30 avril 2004Date d'inscription 27 octobre 2005 Dernière intervention - 25 oct. 2005 à 16:36 - Dernière réponse : yannovitch78 15 Messages postés vendredi 30 avril 2004Date d'inscription 27 octobre 2005 Dernière intervention
- 27 oct. 2005 à 13:55
bonjour à tous,
je ne suis pas vraiment sûr que l'on puisse le faire mais bon, je demande au cas où. J'aimerai en fait me connecter à un site distant et y remplir son formulaire pour le valider, toujours à distance. Nous connaissons biensûr le nom des contrôles à remplir mais même en javascript, ils sont logiquement inaccessibles. Voila, si quel'un a une idée, j'en serais ravi.

P.S: Je parle biensûr de sites qui ne balancent pas les paramètres contenus dans leur url vers les contrôles (cf google).
Afficher la suite 

Votre réponse

2 réponses

Meilleure réponse
TheSaib 2369 Messages postés mardi 17 avril 2001Date d'inscription 26 décembre 2007 Dernière intervention - 25 oct. 2005 à 23:14
3
Merci
Tu parles donc de la méthode Post.

Tu peux soit utiliser le HttpWebClient en mettant la méthod à POST.


HttpWebRequest oWRequest =(HttpWebRequest) WebRequest.Create("http://localhost/Test1/result.aspx");
//écriture dans le flux d'interrogation
string sMessage = "txtNom=Richard";
oWRequest.ContentLength = sMessage.Length;
oWRequest.Method = "POST";
oWRequest.ContentType = "application/x-www-form-urlencoded";


Stream oS1 = oWRequest.GetRequestStream();
StreamWriter oSWriter = new StreamWriter(oS1);
oSWriter.Write(sMessage);
oSWriter.Flush();

//la réponse (idem que pour un GET)
HttpWebResponse oWResponse =(HttpWebResponse) oWRequest.GetResponse();
Stream oS = oWResponse.GetResponseStream();
StreamReader oSReader = new StreamReader(oS,System.Text.Encoding.ASCII);
txtResult.Text = oSReader.ReadToEnd();
oSReader.Close();
oS.Close();

Soit très simple utiliser un navigateur dans ton appli et faire un truc du genre :


object flags= 0;



object targetframe= "";



object headers = "Referer:" + url + '\r'+'\n'+ "Content-Type: application/x-www-form-urlencoded"+'\r'+'\n';



byte[] r =
new Byte[data.Length];



char[] c =
new
char[data.Length];


c = data.ToCharArray();



for(
int i = 0; i< data.Length;i++)


r[i] = Convert.ToByte(c[i]);



object post = r;



this.web.Navigate


(url,
ref flags,
ref


targetframe,
ref post,
ref headers);

ou data correspond à tes champs comme ceci : toto=1&Tata=34.

J'anticipes ta question, même en post ca marche.

::|The S@ib|::
MVP C#.NET

Merci TheSaib 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 94 internautes ce mois-ci

Commenter la réponse de TheSaib
yannovitch78 15 Messages postés vendredi 30 avril 2004Date d'inscription 27 octobre 2005 Dernière intervention - 27 oct. 2005 à 13:55
0
Merci
Merci de ton aide.
Je me suis concentré sur la deuxième méthode, mais je rencontre encore quelques problèmes. Ton objet "this.web" est-il un objet type WebBrowser ou un objet type InternetExplorer. Si je le définit comme un objet WB, il me met un Log sur la méthode Navigate (erreur inconnue). Et si je le définit comme un objet IE, qui possède aussi une méthode Navigate, il me met un Log sur l'instantiation de cet objet (accès refusé). Je suis un peu bloqué du coup. Si tu as une idée, n'hésites pas à m'en faire part.
Commenter la réponse de yannovitch78

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.