2013-01-18 45 views
4

我有一个需要通过代理支持连接的提升客户端。通过http代理提升asio ssl身份验证

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

该代理是http,我需要从https站点连接/检索信息。

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

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

我发现这个旧帖子

boost::asio handshake through http proxy?

的问题是: sslsocket_(socket_,上下文)//这不会编译(构造函数期待一个io_service对象不是一个套接字) --using升压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),但我不明白这对我有什么帮助 }

+0

读取/写入响应,并显示编译失败的代码 –

回答

1

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