从在线文件c ++中读取

时间:2018-02-07 16:05:41

标签: c++ boost-asio

我正在使用此代码:

#include <iostream>
#include <string>
#include <boost/asio.hpp>
int main()
{
    boost::asio::ip::tcp::iostream s("www.a.com", "http");
    if(!s)
        std::cout << "Could not connect to www.a.com\n";
    s  << "GET /b.txt HTTP/1.0\r\n"
       << "Host: www.a.com\r\n"
       << "Accept: */*\r\n"
       << "Connection: close\r\n\r\n" ;
    for(std::string line; getline(s, line); )
         std::cout << line << '\n';
}

当然我使用的是合适的网站,而不是&#34; a.com&#34; 但我总是得到&#34;无法连接到www.a.com&#34; 知道为什么吗?

1 个答案:

答案 0 :(得分:0)

您必须正确格式化您的请求。谷歌:

int main()
{
    boost::asio::ip::tcp::iostream s("www.google.com", "http");
    if(!s)
        std::cout << "Could not connect to www.a.com\n";
    s  << "GET / HTTP/1.0\r\n"
        << "Host: www.google.com\r\n"
        << "User-Agent: Boost\r\n"
        << "Accept: */*\r\n"
        << "Connection: close\r\n\r\n" ;
    for(std::string line; getline(s, line); )
        std::cout << line << '\n';
}

注意,GET后没有冒号。 /是几乎任何网站的根路径。您是否也设置了Host:

上面的代码让我从谷歌获得200 OK。