有关如何使用cpp-netlib执行异步http get请求的示例

时间:2012-10-25 00:36:37

标签: c++ asynchronous compiler-errors http-request cpp-netlib

我正在尝试使用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;
}

1 个答案:

答案 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);

希望这一切(或足以让你开始)。