2012-10-25 47 views
4

我试图使用cpp-netlib来执行异步http请求。我在文档中找不到任何这样的例子,因此甚至无法编译它。我目前的尝试是低于(在评论中有编译错误)。任何提示如何使其工作?先谢谢你!示例如何使用cpp-netlib做异步http获取请求

#include <iostream> 
#include <boost/network/protocol/http/client.hpp> 

using namespace std; 
using namespace boost::network; 
using namespace boost::network::http; 

typedef function<void(boost::iterator_range<char const *> const &, boost::system::error_code const &)> body_callback_function_type; // ERROR: Expected initializer before '<' token 

body_callback_function_type callback() // ERROR: 'body_callback_function_type' does not name a type 
{ 
    cout << "This is my callback" << endl; 
} 

int main() { 
    http::client client; 
    http::client::request request("http://www.google.com/"); 
    http::client::response response = client.get(request, http::_body_handler=callback()); // ERROR: 'callback' was not declared in this scope 
    cout << body(response) << endl; 
    return 0; 
} 

回答

3

我没有用CPP-NETLIB,但它看起来像有一个与你的代码一些明显的问题:

第一个错误是在功能上的typedef缺少boost::

typedef function<void(boost::iterator_range<char const *> const &, boost::system::error_code const &)> body_callback_function_type; // ERROR: Expected initializer before '<' token 

应该

typedef boost::function<void(boost::iterator_range<char const *> const &, boost::system::error_code const &)> body_callback_function_type; 

第二个错误是:

body_callback_function_type callback() 
{ 
    cout << "This is my callback" << endl; 
} 

应该是正确的功能:

void callback(boost::iterator_range<char const *> const &, boost::system::error_code const &) 
{ 
    cout << "This is my callback" << endl; 
} 

第三个错误是,你应该通过回调,不叫它:

http::client::response response = client.get(request, http::_body_handler=callback()); 

应该

http::client::response response = client.get(request, callback); 

希望就是所有(或足够让你开始)。