Accueil > > > [C++][W IN]LIBRAIRIE HTTP
[C++][W IN]LIBRAIRIE HTTP
Information sur la source
Description
Voila une petite lib HTTP pour faire des requetes sur le web, j'pense qu'on doit pouvoir l'adapter pas trop difficilement sur linux, mais n'ayant jamais dev sur cette plateforme, j'peux pas en dire plus. Pour l'utilisation de la lib, j'ai pas fait de doc dsl :( J'explique rapidement en dessous.
Source
- #include "HTTP/Request.h"
-
- HTTP::Request req("google.com"); //le port est déjà définit par défaut (80)
- HTTP::Response rp; //la réponse de la req
-
- HTTP::Args args; //pour def les variables GET ou POST
- args.AddArgs("mavariable", "lavaleur");
-
- TCallback<MaClass> cb
- cb.SetCallback(this, &MaClass::MaMethod);
-
- req.Get/* ou Post */("/index.php", &rp, &args, 0 /* Position de la ou doit commencer le téléchargement du contenu */, &cb, HTTP::SAVE_IN_BUFF /* Sauvegarde le contenu de la page dans le buffer rp.binBody */ | HTTP::AUTO_REDIRECT /* Redirectionne automatiquement si il y a une entête Location: */);
- /*La methode retourne soit :
- HTTP::Request::CALLBACK_EXIT = 2 // si le callback demande la sortie
- HTTP::Request::CONN_ERROR = 0 // si il y a une erreur de connexion
- HTTP::Request::SEND_ERROR = -1 // Si il y a une erreur lors de l'envoi
- HTTP::Request::INIT_ERROR = -2 // Si la classe n'est pas initialisée
- sinon true en cas de succès.
-
- Le prototype du callback:
- DWORD MaClasse::MaMethode(const std::vector<void *>& params)
- Lors de l'appelle du callback la valeur de params est:
- __int64 bodySize = *(__int64 *)params[0]; //taille du contenu (peut être égal a 0 si le serveur ne définit pas le content-length
- int recvSize = *(int *)params[1]; //taille du buffer
- const char *buffer = (const char *)params[2]; //le buffer avec un morceau du contenu
-
- Si on retourne HTTP::Request::CALLBACK_EXIT dans le callback ca stoppera le DL et retourna dans le req.Get() ou req.Post() un HTTP::Request::CALLBACK_EXIT
-
- On a les infos sur les entêtes dans HTTP::Response::header donc: */
- rp.header.GetHttpVersion() // retourne la version de HTTP (string)
- rp.header.GetHttpCode() // retourne le code Http (int)(ex: 200 / 404 / 403 / etc...)
- rp.header.GetHttpCodeName() //retourne le nom du code (string)(ex: OK / Not Found / Forbidden / etc..)
- rp.header.GetHeader(const char *headerName) //retourne un string avec la valeur de l'entête qui a comme headerName
#include "HTTP/Request.h"
HTTP::Request req("google.com"); //le port est déjà définit par défaut (80)
HTTP::Response rp; //la réponse de la req
HTTP::Args args; //pour def les variables GET ou POST
args.AddArgs("mavariable", "lavaleur");
TCallback<MaClass> cb
cb.SetCallback(this, &MaClass::MaMethod);
req.Get/* ou Post */("/index.php", &rp, &args, 0 /* Position de la ou doit commencer le téléchargement du contenu */, &cb, HTTP::SAVE_IN_BUFF /* Sauvegarde le contenu de la page dans le buffer rp.binBody */ | HTTP::AUTO_REDIRECT /* Redirectionne automatiquement si il y a une entête Location: */);
/*La methode retourne soit :
HTTP::Request::CALLBACK_EXIT = 2 // si le callback demande la sortie
HTTP::Request::CONN_ERROR = 0 // si il y a une erreur de connexion
HTTP::Request::SEND_ERROR = -1 // Si il y a une erreur lors de l'envoi
HTTP::Request::INIT_ERROR = -2 // Si la classe n'est pas initialisée
sinon true en cas de succès.
Le prototype du callback:
DWORD MaClasse::MaMethode(const std::vector<void *>& params)
Lors de l'appelle du callback la valeur de params est:
__int64 bodySize = *(__int64 *)params[0]; //taille du contenu (peut être égal a 0 si le serveur ne définit pas le content-length
int recvSize = *(int *)params[1]; //taille du buffer
const char *buffer = (const char *)params[2]; //le buffer avec un morceau du contenu
Si on retourne HTTP::Request::CALLBACK_EXIT dans le callback ca stoppera le DL et retourna dans le req.Get() ou req.Post() un HTTP::Request::CALLBACK_EXIT
On a les infos sur les entêtes dans HTTP::Response::header donc: */
rp.header.GetHttpVersion() // retourne la version de HTTP (string)
rp.header.GetHttpCode() // retourne le code Http (int)(ex: 200 / 404 / 403 / etc...)
rp.header.GetHttpCodeName() //retourne le nom du code (string)(ex: OK / Not Found / Forbidden / etc..)
rp.header.GetHeader(const char *headerName) //retourne un string avec la valeur de l'entête qui a comme headerName
Conclusion
J'espère que ca vous sera utile, je n'ai pas trop le temps de la mettre a jour mais vos remarques sont bienvenue :), je modifierais quand je pourrais.
Fichier Zip
Historique
- 24 août 2010 02:09:16 :
- Correction de Source
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Analyse fichier log a faire en C [ par Nexouille ]
A l'aideeeeeeeeeeeeeeeeeeeeeeeeee***************************************Les serveurs web enregistrent la trace des visites dans des fichiers de log. C
timeout client Http [ par houssadotcom ]
Bonjour,mon programme fait des requetes http avec les classes Atl,mon probleme est que certaine requete http ne reponde pas et je voudrais qu'il y ai
timeout client Http [ par houssadotcom ]
Bonjour,mon programme fait des requetes http avec les classes Atl,mon probleme est que certaine requete http ne reponde pas et je voudrais qu'il y ai
le http post OK. Mais pour un UPLOAD de fichier ? [ par pdessoulles ]
Salut à tous,Le problème suivant me pourrit la vie depuis quelques jours :J'arrive bien à envoyer des données sur une socket ouverte sur un serveur ht
Socket + http [ par Akylon ]
Voila je veux recuperer des documents par le protocole http avec la fonction suivante: void traitement(SOCKET client){ int lg; char* requete="GE
Methode POST dans le protocole HTTP [ par ramzich ]
Bonjour,j'ai developpé un serveurHTTP en C++ ki pr l'instant traite qu'un demande GET venant d'un navigateur WEB.Je veux evoluer ce serveur pour kil t
Comment installer la librairie GMP? [ par Kentoo ]
Bonjour à tous!J'aimerais savoir Comment installer la librairie gmp? J'utilise dev-c++ et je suis sous windowspour ceux qui ne connaissent pas: http:/
requete avec GET conditionele [ par casper_2 ]
excuser g des soucis avec ma requete conditionnelle,g appliker ceci :GET /users/charles@mimi.fr/provisoires_vpn.ZIP HTTP/1.1 \nIf-Modified-Since: Thu,
serveur HTTP/1.0 methode GET [ par Trascal ]
Dans le cadre d'un projet au sein de mon BTS informatique je doit créer l'algorithme d'un serveur HTTP/1.0 en ne s'occupant que (principalement) de la
requete http sur www.imdb.com [ par InsAne0 ]
Bonjour tout le monde,Je voudrais pouvoir telecharger page du site www.imdb.com tel que http://www.imdb.com/title/tt0062622/ par exemple.Mais je pense
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Forum
MATRICE TEMPLATEMATRICE TEMPLATE par hjr2610
Cliquez pour lire la suite par hjr2610 RE : SAC A DOS RE : SAC A DOS par hadjkaddour
Cliquez pour lire la suite par hadjkaddour
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|