我正在检索有关特定艺术家的一些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文件。
如何构建我的流以适应字符串参数中给出的任何艺术家?