Remplir un formulaire sur un site web

cispo Messages postés 103 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 10 septembre 2007 - 14 févr. 2006 à 17:52
cispo Messages postés 103 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 10 septembre 2007 - 17 févr. 2006 à 11:25
Bonsoir,

Je dois automatiser la validation d'un formulaire web afin de m'identifier (login et mot de passe) pour ensuite pouvoir télécharger un fichier.

Je procède donc ainsi :

try
{
HttpWebRequest oWRequest = (HttpWebRequest) WebRequest.Create("http://www.extranet.fbf.fr");
//écriture dans le flux d'interrogation
//Username et Password sont les champs du formulaire web
string sMessage = "Username=toto&Password=tata";
oWRequest.ContentLength = sMessage.Length;
//le site web utilise la méthode POST
oWRequest.Method = "POST";

oWRequest.ContentType = "application/x-www-form-urlencoded; charset=utf-8";
HttpWebResponse oWResponse =(HttpWebResponse) oWRequest.GetResponse();

Stream oS1 = oWRequest.GetRequestStream();
StreamWriter oSWriter = new StreamWriter(oS1);
oSWriter.Write(sMessage);
oSWriter.Flush();
}
catch (WebException E)
{
Console.WriteLine(E.Message);
}

Au bout de 1 ou 2 minutes, j'obtiens ce message d'erreur :


Unhandled Exception: System.InvalidOperationException: The response for this req
uest cannot be retrieved until request data has been written.
at System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
at System.Net.HttpWebRequest.GetResponse()
at DefaultNamespace.MainClass.Main(String[] args) in d:\Documents\sollivier\M
es documents\SharpDevelop Projects\Import Cassiopée\Main.cs:line 34
Appuyez sur une touche pour continuer...

Quelqu'un aurait-il une idée ?

Merci d'avance,

3 réponses

TheSaib Messages postés 2367 Date d'inscription mardi 17 avril 2001 Statut Membre Dernière intervention 26 décembre 2007 23
15 févr. 2006 à 10:10
Tu fait ton GetResponse avoir d'avoir écrit dans ton stream.

//Reponse
HttpWebResponse oWResponse =(HttpWebResponse) oWRequest.GetResponse();

//Requete
Stream oS1 = oWRequest.GetRequestStream();
StreamWriter oSWriter = new StreamWriter(oS1);
oSWriter.Write(sMessage);
oSWriter.Flush();
}
catch (WebException E)
{
Console.WriteLine(E.Message);
}

Requete avant de demander la reponse :)

::|The S@ib|::
MVP C#.NET
0
cispo Messages postés 103 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 10 septembre 2007 3
17 févr. 2006 à 09:45
Oui merci :)

En revanche, j'ai 2 autres questions:

- Comment puis-je tester si mon identification a bien fonctionné ?
- Le fichier que je télécharge est un fichier Excel. Je le télécharge bien mais quand je l'ouvre, il me dit qu'il lui manque un fichier .css. Y a t-il un moyen de télécharger les fichiers qui sont liés à celui qui m'intéresse ?

Merci d'avance,
0
cispo Messages postés 103 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 10 septembre 2007 3
17 févr. 2006 à 11:25
Hum en fait je crois qu'il me télécharger n'importe quel fichier.
Pour télécharger mon fichier, j'exécute ce code :

string remoteUri = "http://www.extranet.fbf.fr/Web/Extranet/ExtraMain.nsf/DocumentsByIDWeb/5JRK6G/$File/";
string fileName "Historique_Euribor_quotidiens.xls", myStringWebResource null;
// Create a new WebClient instance.
WebClient myWebClient = new WebClient();
// Concatenate the domain with the Web resource filename.
myStringWebResource = remoteUri + fileName;
Console.WriteLine("Downloading File "{0}" from "{1}" .......\n\n", fileName, myStringWebResource);
// Download the Web resource and save it into the current filesystem folder.
myWebClient.DownloadFile(myStringWebResource,fileName);
Console.WriteLine("Successfully Downloaded File "{0}" from "{1}"", fileName, myStringWebResource);
Console.WriteLine("\nDownloaded file saved in the following file system folder:\n\t" + Application.StartupPath);

En fait, si je change la valeur de ma variable "filename" et que je mets un nom au hasard, bah il me télécharge toujours un fichier alors que logiquement il devrait me dire que ce fichier n'existe pas ...
0
Rejoignez-nous