wxDev.fr, le portail francophone consacré à wxWidgets ! ( The french portal for wxWidgets )  
Esp. membre
Recheche rapide



Recherche avancée
Statistiques
Membres inscrits :2359

Membres en ligne : 0
Invités en ligne : 3

Valid XHTML 1.0 Transitional

Valid CSS2

Menu Snippets (navigation):
Pages: 1    Accueil » Snippets » Internet - Réseaux
» [wxHTTP] : envoyer une requête POST
Détails du snippet : [wxHTTP] : envoyer une requête POST
Informations sur l'auteur de ce snippet :


Hors ligne
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1390
Snippets: 25
Tutoriels: 6
Introduction / Description :
Il peut être pratique, lorsque l'on crée une application en relation avec internet, d'avoir à envoyer une requête avec la méthode "POST".

Pour information, il s'agit de la méthode utilisée par la quasi-totalité des formulaires sur les sites.

Il est tout à fait possible de faire ce genre de requête avec la classe wxHTTP, encore faut-il savoir comment faire.
Contenu du snippet :

Code wxWidgets:

// Le header pour la classe wxHTTP
#include <wx/protocol/http.h>
 
wxHTTP http;
// Le header servant à déclarer le type de requête POST
http.SetHeader(_T("Content-type"),wxT("application/x-www-form-urlencoded"));
// Les valeurs à transmettre par la méthode POST.
http.SetPostBuffer(_T("pseudo=MonPseudo&password=MonMotDePasse"));
// On mets le Timeout à 2 minutes (car par défaut, wxWidgets le met à 10 minutes)
http.SetTimeout(120);
// Le buffer qui va recevoir les données
char szBuff[1025];
// Pour une page web, on va pouvoir la stocker dans un wxString
wxString data=_T("");
// On essaye de connecter le wxHTTP : on ne peut se connecter qu'à un serveur
// et non à une adresse complète du style http://www.wxwidgets.org/downloads
if (http.Connect(_T("www.monsite.fr"),80))
{
    if (wxInputStream *stream=http.GetInputStream(_T("/connection.php") ) )
    {
        // On lit une partie des données disponibles
        stream->Read(szBuff,1024);
        while (stream->LastRead())
        {
            // On s'assure que le texte téléchargé se termine bien
            // par un caratère zéro
            szBuff[stream->LastRead()]='\0';
            // On fait la conversion si nécessaire
            data+= wxString::FromAscii(szBuff);
            // Et on essaie de lire la partie suivante
            stream->Read(szBuff,1024);
        }
        delete stream;
    }
}
// Vous pouvez maintenant faire ce que vous voulez anec le wxString "data"
 
Explications finales :
C'est tout.
Vous aurez sans doute remarqué la façon de transmettre les données : il suffit de les placer dans un wxString de la façon suivante:
NomDeLaVariable1=ValeurDeLaVariable1&NomDeLaVariable2=ValeurDeLaVariable2&NomDeLaVariable3=ValeurDeLaVariable3

A noter que cette méthode ne permet pas d'uploader des fichiers.
Pour cela, il faut modifier le header "Content-type" pour lui donner la valeur "multipart/form-data", et encoder le fichier avec la méthode base64.
Du moins, c'est ce qu'il me semble ;)
Ça fera l'objet d'un autre snippet...

En attandant,
@+ et bonne prog !

Xav'
Commentaires
xxltux (Membre)
Lieu: Montpellier
Inscrit le : 07-10-2007
Messages: 544
Snippets: 0
Tutoriels: 0
Site web
Hors ligne
A mon avis faudrai que tu mettes les deux tutos dans un seul, ils sont trés complémentaires je trouve

Itérer est humain, récurser est divin
patrick (Invité)
Bonjour,

Est ce qu'il y a moyen d'avoir un exemple d'envoi de fichier par wxhttp en POST ?

merci,
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1390
Snippets: 25
Tutoriels: 6
Site web
Hors ligne
patrick:
Bonjour
Est ce qu'il y a moyen d'avoir un exemple d'envoi de fichier par wxhttp en POST ?
merci,
Bien sûr.
Je ferais quelques essais ce soir, si je trouve le temps, pour voir comment ça marche exactement.

@+
Xav'

Le nouveau portail wxWidgets francophone : www.wxdev.fr
Ben en fait, vous y êtes déjà... et effectivement, depuis le temps, ce n'est plus tellement nouveau....
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1390
Snippets: 25
Tutoriels: 6
Site web
Hors ligne
Bon, ben en fait, c'est un peu plus compliqué que prévu...
Mais il ne faut pas désespérer, j'y arriverais bien...

Le nouveau portail wxWidgets francophone : www.wxdev.fr
Ben en fait, vous y êtes déjà... et effectivement, depuis le temps, ce n'est plus tellement nouveau....
patrick (Invité)
Voilà je viens de faire un upload de fichier avec wxhttp...
c'est buggé en effet j'ai tjrs 100% de cpu avec le setpostbuffer.
je ne trouve pas de solution.

http:/www.wxwidgets.org/wiki/index.php/WxHTTP
Menu Snippets (navigation):
Pages: 1    Accueil » Snippets » Internet - Réseaux
» [wxHTTP] : envoyer une requête POST