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: 1375
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: 1375
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à...
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1375
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à...
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