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;

2番目のエラーは次のとおりです。

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

3 番目のエラーは、コールバックを呼び出すのではなく、コールバックを渡す必要があることです。

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 に答える