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

Signaler
Messages postés
32
Date d'inscription
jeudi 5 juin 2008
Statut
Membre
Dernière intervention
4 mai 2011
-
Messages postés
32
Date d'inscription
jeudi 5 juin 2008
Statut
Membre
Dernière intervention
4 mai 2011
-
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

Messages postés
276
Date d'inscription
lundi 8 septembre 2008
Statut
Membre
Dernière intervention
15 avril 2013
2
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.
Messages postés
32
Date d'inscription
jeudi 5 juin 2008
Statut
Membre
Dernière intervention
4 mai 2011

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?
Messages postés
4
Date d'inscription
dimanche 31 octobre 2004
Statut
Membre
Dernière intervention
3 mars 2009

Lu,
"postData", donnes un exemple STP.
Normalement ton retour est dans "tex".
Messages postés
32
Date d'inscription
jeudi 5 juin 2008
Statut
Membre
Dernière intervention
4 mai 2011

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