通过http代理增强asio ssl身份验证

时间:2013-01-18 02:42:34

标签: c++ boost boost-asio

我有一个需要通过代理支持连接的boost客户端。

目前我能够连接到代理并成功与外部服务器通信,只有一个例外 - ssl服务器。

代理是http,我需要连接/检索来自https网站的信息。

我的代码现在做了什么     连接到代理asio :: ip :: tcp :: socket _socket; -succeeds     将CONNECT主机:ssl服务器发送到代理(上面连接)-succeeds

- 这是我被困的地方。如何执行握手/发送请求?

我找到了这个老帖子

boost::asio handshake through http proxy?

问题是:    sslsocket_(socket_,context)//这不编译(构造函数期望io_Service不是套接字) - 使用提升1.52

以下是代码

//解析标题并检查响应

boost::asio::ssl::stream<boost::asio::ip::tcp::socket> _socket;
boost::asio::ip::tcp::socket _httpSocket;
...

int response= _httpHeader.getResult(header.c_str());
if(response==200) { 
boost::asio::ssl::context ctx(io_service,boost::asio::ssl::context::sslv23);
 _sslSocket(_httpSocket,ctx); //this fails 

注意:我从上面的帖子中复制了上述内容,基于此部分的帖子。它看起来应该是_sslSocekt(io_service,ctx),但我不知道这对我有什么帮助           }

1 个答案:

答案 0 :(得分:1)

我找到了答案,我需要使用_socket.next层连接到代理。然后,如果连接成功,则使用_socket.lowest_layer()

读/写响应