我正在尝试使用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;
}
答案 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);
希望这一切(或足以让你开始)。