使用cpp-netlib进行异步http get请求的示例

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;
}
1个回答

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

希望这些内容足以启动你的项目,以下是需要开始的信息:

希望这些对你有所帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接