[c++][w in]librairie http

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 / Exemple :


#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.

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.