4

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

1 回答 1

3

我没有使用过 cpp-netlib,但您的代码似乎存在一些明显的问题:

第一个错误是boost::函数 typedef 缺失。

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

希望这就是全部(或足以让你开始)。

于 2012-10-25T00:55:16.380 回答