Je cherche une bibliothèque C++ qui implémente ou permette l'implémentation d'un client HTTP. Il devrait également gérer les cookies.Quelle bibliothèque C++ dois-je utiliser pour implémenter un client HTTP?
Que proposez-vous?
Je cherche une bibliothèque C++ qui implémente ou permette l'implémentation d'un client HTTP. Il devrait également gérer les cookies.Quelle bibliothèque C++ dois-je utiliser pour implémenter un client HTTP?
Que proposez-vous?
Curl++: est une option, surtout si vous voulez que les choses dans plus d'un style de C++.
cpp-netlib: très bon et simple à utiliser, disponible sur ubuntu
sudo apt-get install libcppnetlib-dev
exemple:
using namespace boost::network;
using namespace boost::network::http;
client::request request_("http://127.0.0.1:8000/");
request_ << header("Connection", "close");
client client_;
client::response response_ = client_.get(request_);
std::string body_ = body(response_);
brisé lien (15 caractères) –
Qu'est-ce que la convention de soulignement de fin indiquer? – rbanffy
Sur Windows, vous pouvez conduire IE en utilisant l'interface IWebBrowser2
.
Valide, mais une solution ** vraiment ** lente pour ceux qui ont des exigences de performance élevées. – Kiril
Si c'est pour les fenêtres, jetez un oeil à Windows HTTP Services (WinHTTP)
http://msdn.microsoft.com/en-us/library/aa384273(VS.85).aspx
Microsoft Windows HTTP Services de (WinHTTP) fournit aux développeurs une interface de programmation d'applications client HTTP (API) pour envoyer les demandes via le protocole HTTP aux autres serveurs HTTP .
WinHTTP offre à la fois un C/C++ interface de programmation d'applications (API) et un modèle d'objet Composant d'automatisation (COM) adapté pour une utilisation dans Active Server Pages (ASP) des applications .
Cookies http://msdn.microsoft.com/en-us/library/aa383261(VS.85).aspx
Merci pour votre suggestion. C'est du C sans C++. Je voudrais vraiment utiliser le travail acharné de Bjarne (http://research.att.com/~bs). Il devrait être interdit depuis quelques années d'utiliser C dans la programmation d'applications :) –
Vous pouvez WinInet
http://msdn.microsoft.com/en-us/library/aa385331(VS.85).aspx
Contrairement à WinHTTP, il est plus orienté côté client.
Merci pour votre suggestion. Jetez un oeil à mon commentaire sur WinHTTP réponse à cette question car il s'applique ici aussi. "// Cet appel échouera sur la première passe, parce que // pas de tampon est alloué. if (! HttpQueryInfo (hhttp, HTTP_QUERY_RAW_HEADERS_CRLF, (LPVOID) lpOutBuffer, & dwSize, NULL))" « Pour la facilité d'utilisation , WinINet résume ces protocoles dans une interface de haut niveau. " Interface de haut niveau? Peut-être que c'était une interface de haut niveau il y a 20 ans ... –
Vous pouvez également regarder les noms d'URL: http://msdn.microsoft.com/fr-fr/library/ms774965(VS.85).aspx, il s'appuie sur WinInet (comme je le pense), mais fournit COM comme interface. – Eugene
@Piotr: croyez-moi, si vous pensez que WinHTTP est mauvais, vous allez absolument * HATE * WinInet ... C'est une API étonnamment hostile, même si vous avez l'habitude de travailler avec les bibliothèques C. Et le pire, ce sont peut-être les constantes WinInet et les erreurs qui "traversent" les bibliothèques de plus haut niveau comme MSXML ... Le grand avantage de WinInet est que si un utilisateur a déjà configuré les paramètres de proxy pour son compte (via les options administrateur ou le panneau de configuration IE/Internet Options), WinInet les récupère automatiquement; D'autres bibliothèques peuvent avoir besoin d'une configuration explicite. Windows seulement si ... – Shog9
Jetez un oeil à Poco Libraries.
J'ai commencé à les utiliser car ils sont portables et c'est un plaisir de travailler avec. Simple et propre - bien que je n'ai pas plongé dans quelque chose de fantaisie pour le moment.
Toutes les bibliothèques alternatives sont disponibles ici, si vous avez besoin des API complexes http, essayez boucle, si veux juste obtenir un fichier, essayez http-tiny
double: http://stackoverflow.com/questions/342918/simple-asynchrone-multi-threaded-http-demande-bibliothèque-pour-c – lothar
imho non, c'est une autre question (bibliothèque asynchrone, threading) – dfa