2009-05-04 5 views

Répondre

23

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_); 
+0

brisé lien (15 caractères) –

+0

Qu'est-ce que la convention de soulignement de fin indiquer? – rbanffy

10

C++ (STL) ne dispose pas d'une bibliothèque HTTP ou réseau par défaut, vous aurez à faire avec autre chose.

libcurl devrait faire ce que vous voulez. cURL++ est la même libcurl enveloppée dans un wrapper C++ brillant.

0

Sur Windows, vous pouvez conduire IE en utilisant l'interface IWebBrowser2.

+0

Valide, mais une solution ** vraiment ** lente pour ceux qui ont des exigences de performance élevées. – Kiril

1

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

+0

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 :) –

2

Vous pouvez WinInet

http://msdn.microsoft.com/en-us/library/aa385331(VS.85).aspx

Contrairement à WinHTTP, il est plus orienté côté client.

+0

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

+0

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

+0

@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

15

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.

+3

Poco est une très belle bibliothèque qui, à mon avis, mérite plus de publicité que ce qu'il semble obtenir – jcoder

+0

Avec le soutien de SSL! – nergeia