認証情報を必要とするネットワーク上のデバイスに http 要求を送信しようとしています。たとえば、Web ブラウザで機能するリクエストは次のようになります。
http://mylogin:myPassword@10.11.2.118/axis-cgi/virtualinput/activate.cgi?schemaversion=1&port=1
ただし、boost beast を使用してログイン情報とパスワード情報を入力する方法がわかりません。
リクエストを次のように作成します。
// host = mylogin:myPassword@10.11.2.118 does not resolve
// host = 10.11.2.118 resolves but I get an authentication error from the device due to no username and password
auto results = resolver.resolve(host, port)
...
//Do the connecting
...
http::request<http::string_body> req{http::verb::get, path, 11};
req.set(http::field::host, host);
req.set(http::field::user_agent, BOOST_BEAST_VERSION_STRING);
req.set(http::field::content_type, "application/json");
req.set(http::field::accept, "vdn.dac.v1");
リクエストに使用できるフィールドはありますか?
更新: Boost Beast を使用した基本認証とダイジェスト認証をサポートする次のライブラリを見つけました: https://github.com/RAvenGEr/simple-beast-client。そのライブラリを使用して、上記の URL へのリクエストを実行できます。しかし、それは私が望むよりも複雑です。
更新: 認証を処理する libcurl の使用に切り替えます (指定した URL を直接入力して、Digest 認証を許可することができます)。