Utilisation de HttpWebRequest avec la méthode POST Code : C++.net

zebulon88 Messages postés 32 Date d'inscription jeudi 5 juin 2008 Statut Membre Dernière intervention 4 mai 2011 - 26 févr. 2009 à 20:07
zebulon88 Messages postés 32 Date d'inscription jeudi 5 juin 2008 Statut Membre Dernière intervention 4 mai 2011 - 2 mars 2009 à 10:25
Bonjour,


Je cherche depuis pas mal de temps à récupérer automatiquement des
fichiers txt sur un site pour m'éviter d'aller dessus tous les
jours.


Pour récupérer ces données, il faut remplir un formulaire sur le site (avec des checkbox etc.), j'aimerais automatiser cela.


J'ai isolé la requete HTTP, qui est une méthode POST, que je dois envoyer au site.


Je ne sais pas comment utiliser HttpWebRequest pour récupérer mes fichiers txt.

En effet, la méthode POST intègre mes paramètres de fichiers dans
le corps du paquet. Comment intégrer les paramètres dont le serveur a
besoin pour me retourner une réponse ?


Savez vous comment faire?


Merci beaucoup

4 réponses

ed73 Messages postés 276 Date d'inscription lundi 8 septembre 2008 Statut Membre Dernière intervention 15 avril 2013 2
27 févr. 2009 à 09:42
Pour récupérer la réponse il faut utiliser la classe HttpWebResponse qui va te renvoyer un Stream. Ensuite ya plus qu'à lire le Stream.
0
zebulon88 Messages postés 32 Date d'inscription jeudi 5 juin 2008 Statut Membre Dernière intervention 4 mai 2011
27 févr. 2009 à 10:32
Merci pour ton message

voici un code que j'ai trouvé sur un autre site et modifié. Ce code permet à la base de télécharger le code source de la page Web, mais je dois télécharger le fichier txt que me renvoit le serveur. Avec wireshark (ethereal), on voit bien le fichier txt en retour transiter en TCP.. J'ai intercepter la requete HTTP à envoyer, mais comment l'intégrer dans HttpWebRequest...

HttpWebResponse ^HttpWResponse;
StreamReader ^sr;
String^ tex;
try
{
    HttpWebRequest ^ HttpWRequest = safe_cast<HttpWebRequest ^>(WebRequest::Create("http://monsite.com/donneesblabla.aspx"));
    HttpWRequest->CachePolicy = gcnew Cache::HttpRequestCachePolicy(Cache::HttpRequestCacheLevel::Reload); //je sais pas à quoi ca sert...
    HttpWRequest->Method= "POST";
HttpWRequest->Referer="http://monsite.com/donneesblabla.aspx";

HttpWRequest->ContentType = "application/x-www-form-urlencoded";

String^ postData ="Le contenu du paquet de la requete contenant mes infos à envoyer";
ASCIIEncoding^ encoding = gcnew ASCIIEncoding;
array^ byte1 = encoding->GetBytes( postData );
HttpWRequest->ContentLength = byte1->Length;

HttpWResponse = safe_cast<HttpWebResponse^>(HttpWRequest->GetResponse()); //Le programme reste bloqué ici, il y a une connection et c'est tout
    sr = gcnew StreamReader(HttpWResponse->GetResponseStream());
    //richTextBox1->Text= sr->ReadToEnd();
    tex= sr->ReadToEnd();
}
catch (Exception ^ex)
{
    Console::WriteLine(ex->Message);               
}
finally
{
    if (HttpWResponse != nullptr)
        HttpWResponse->Close();
    if (sr != nullptr)
        sr->Close();
}

je ne sais pas comment intégrer mon postdata dans la requete.

Merci de votre aide.

PS: comment intégrer du code C++ dans un post?
0
ren97 Messages postés 4 Date d'inscription dimanche 31 octobre 2004 Statut Membre Dernière intervention 3 mars 2009
1 mars 2009 à 19:56
Lu,
"postData", donnes un exemple STP.
Normalement ton retour est dans "tex".
0
zebulon88 Messages postés 32 Date d'inscription jeudi 5 juin 2008 Statut Membre Dernière intervention 4 mai 2011
2 mars 2009 à 10:25
Salut

Merci.
Finalement j'ai trouvé un moyen plus simple de faire (j'ai simplement trouvé un site qui me donne un lien direct aux données que je recherchais). et le HttpWebRequest fonctionne
0
Rejoignez-nous