特定のアーティストに関する xml データを取得しています。私が使っているのはboost::iostreams:
boost::asio::ip::tcp::iostream stream;
stream.connect("www.musicbrainz.org", "http");
stream << "GET /ws/2/artist/?query=artist:madonna HTTP/1.1\r\n";
stream << "Host: www.musicbrainz.org\r\n";
stream << "Accept: */*\r\n";
stream << "Connection: close\r\n\r\n";
stream.flush();
std::cout << stream.rdbuf() << std::endl;
これはうまくいきます。アーティスト「マドンナ」に関する xml データを取得しています。しかし、このコードをアーティスト名をパラメーターとして持つメソッドに入れたいので、これを試しました:
static void FetchArtistInfo(std::string artist)
{
boost::asio::ip::tcp::iostream stream;
stream.connect("www.musicbrainz.org", "http");
stream << "GET /ws/2/artist/?query=artist:";
stream << artist;
stream << " ";
stream << "HTTP/1.1\r\n";
//stream << url;
stream << "Host: www.musicbrainz.org\r\n";
stream << "Accept: */*\r\n";
stream << "Connection: close\r\n\r\n";
stream.flush();
std::cout << stream.rdbuf() << std::endl;
}
しかし、そのようにストリームを書き込んでもデータは取得されません。私は常に「禁止された」xml ファイルを取得します。
文字列パラメーターで指定されたアーティストに対して機能するようにストリームを構築する方法はありますか?