繁体   English   中英

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

[英]Example on how to do asynchronous http get request using 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;
}

我没有使用过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);

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM