現在boost::beast
、ntrip 1.0 クライアントの実装に使用しています。次のようなリクエストがあります。
GET /BUCU1 HTTP/1.0 ユーザーエージェント: NTRIP GNSSInternetRadio/1.2.0 認証: 基本 aHVnb2JlbjpodWdvYmVuMTIz
そして、次のような応答:
ICY 200 OK
非標準の http 応答があります。
私はビーストhttpクライアントのサンプルコードとして、バッファでこの応答を取得します。ただし、読み取り関数で例外が発生します。エラーは「読み取り、バージョンが正しくありません」です。非標準の http 応答を処理する最良の方法は何だろうと思っています。
void
on_write(
boost::system::error_code ec,
std::size_t bytes_transferred)
{
boost::ignore_unused(bytes_transferred);
if (ec)
return fail(ec, "write");
// Receive the HTTP response
// boost::beast::flat_buffer buffer_; // (Must persist between reads)
// http::response <http::string_body> res_;
http::async_read(socket_, buffer_, res_,
std::bind(
&session::on_read,
shared_from_this(),
std::placeholders::_1,
std::placeholders::_2));
}
void
on_read(
boost::system::error_code ec,
std::size_t bytes_transferred)
{
boost::ignore_unused(bytes_transferred);
if (ec)
return fail(ec, "read"); // ex
}