0

我正在检索有关特定艺术家的一些 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 文件。

任何想法如何构建我的流以适用于字符串参数中给出的任何艺术家?

4

0 回答 0