从C++网上读取文件

从C++网上读取文件,c++,boost-asio,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 <

我正在使用以下代码:

#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';
}
当然,我使用的是一个合适的网站,而不是一个网站
但我总是收到无法连接到www.a.com的邮件
知道为什么吗

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

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之后没有冒号。/是几乎所有网站的根路径。您是否也设置了主机:


上面的代码让我从google获得了200 OK。

s.error.message说了什么?无法连接到www.a.com HTTP/1.1 400错误请求日期:Wed,07 Feb 2018 16:15:35 GMT服务器:Apache接受范围:字节变化:接受编码,用户代理连接:关闭内容类型:text/htmlWhat如果使用有效地址?请发布您尝试连接的url。在我的机器上运行通常不是最佳答案。。而且,OP似乎被卡在了第一个if!s-他没有进入s Hi,@Default,在他的评论中他说他收到了一个:400坏请求OK@Default,如果是他的消息,我很困惑,将删除我的答案。他应该显示他试图连接的url。我同意你的看法。出于这个原因,我投票结束了这个问题。信息太少,无法做出正确的反应。事实上,他没有使用任何括号,在我看来,代码可能也不完整。保留或删除您的答案取决于您。我只是注意到,它在你的机器上运行可能对OP没有帮助。出于安全原因,我无法发布url,因为该网站仍在建设中,无论如何,感谢@lakeweb提供了它现在运行的答案。很抱歉,我不能接受,因为我是新加入社区的,而且我没有足够的声誉点数。