如何将字符串参数连接到Http GET命令

时间:2013-07-30 18:00:20

标签: c++ http

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

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

0 个答案:

没有答案