【问题标题】:how can i modify the contents of a file on the web using asio.boost in c++?如何在 c++ 中使用 asio.boost 修改 Web 上文件的内容?
【发布时间】:2018-07-19 00:15:51
【问题描述】:

我知道如何使用以下代码读取文件的内容:

#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';
}

有什么办法也可以写入文件吗?当然是假设我有权修改文件!

【问题讨论】:

  • 似乎其他人在大约 15 小时前也问过同样的问题,但没有收到答案:stackoverflow.com/questions/48673009/…
  • 是的。假设您也想为此使用 HTTP,则需要使用 PUT 动词(使用配置为支持它的服务器)。您可能还需要进行身份验证。不过,您会发现使用 HTTP 库比重新发明轮子更容易。并考虑其他协议(例如 FTP 或 SSH)。
  • @sehe 我的朋友,我正在做一个项目,他先问了,但没有得到任何答案,所以我在不同的时间再次问了这个问题,希望得到答案。祝你好运天。
  • 我回答并解释了您在 cmets 中的一些持续查询。祝你有美好的一天:)

标签: c++ file boost-asio iostream


【解决方案1】:

感谢您通过真实帐户发布此信息。

你的问题被误导了。

网络上没有“文件”。有服务器,你可以和他们说话。

通常的 Web 服务器使用某种版本的 HTTP,这对于下载 HTML 页面、样式表、图像等内容非常有用。

您想要做的(“写入文件”)不是 HTTP 服务的常规功能。但是,显然有扩展:

  • FrontPage 扩展是早期的事情
  • WebDAV 已被广泛采用(用于 WebSVN、Sharepoint、Apache 等支持)

选择一种协议并使用它。很可能您最终会收到类似“POST”的请求(因此带有内容长度和正文),但可能会收到另一个 HTTP“动词”(https://technet.microsoft.com/en-us/library/bb498138(v=exchg.80).aspx)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-24
    • 2012-07-13
    • 2012-11-24
    • 1970-01-01
    • 2014-06-13
    • 1970-01-01
    • 2022-08-10
    相关资源
    最近更新 更多