我正在检索有关特定艺术家的一些 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;
这工作正常。我正在获取有关艺术家“madonna”的 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 文件。
任何想法如何构建我的流以适用于字符串参数中给出的任何艺术家?