如何添加代理支持,以提高:: ASIO?(how to add proxy support to b

2019-06-26 08:42发布

在我的桌面应用程序,我添加访问使用boost :: ASIO各种互联网资源。 我要做的就是发送HTTP请求(即瓦服务器映射)和读取结果。 我的代码是基于ASIO sync_client样品 。

现在,我从他们运行在他们公司代理谁是无法使用这些功能的客户报告。 在Web浏览器便可以进入他们的代理服务器的地址,一切都很好。 我们的应用程序是无法下载的数据。

我怎样才能到我的应用程序中添加这种支持?

Answer 1:

我找到自己的答案。 这是很简单的:

http://www.jmarshall.com/easy/http/#proxies给人蛮简单明了的说明如何HTTP代理工作。

我不得不做的是下面的代码添加到ASIO sync_client样本示例:

std::string myProxyServer = ...;
int         myProxyPort   = ...;

void doDownLoad(const std::string &in_server, const std::string &in_path, std::ostream &outstream)
{
    std::string server      = in_server;
    std::string path        = in_path;
    char serice_port[255];
    strcpy(serice_port, "http");

    if(! myProxyServer.empty())
    {
        path   = "http://" + in_server + in_path;
        server = myProxyServer;
        if(myProxyPort    != 0)
            sprintf(serice_port, "%d", myProxyPort);
    }
    tcp::resolver resolver(io_service);
    tcp::resolver::query query(server, serice_port);

...


Answer 2:

看来,样本仅仅是什么升压ASIO可以用来炫耀的,但很可能不是要照原样使用。 你或许应该使用不仅处理HTTP代理,而且还HTTP重定向,压缩,等一个完整的图书馆。

HTTP是一个复杂的事情:没有这样做,机会是很高,你会从另一个客户端很快得到消息与另一个问题。

我发现cppnetlib这看起来很有希望,并基于加速ASIO不知道它处理代理虽然。

还有libcurl的 ,但我不知道这是否可以很容易地加速ASIO集成。



文章来源: how to add proxy support to boost::asio?