首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >按IP地址划分的Poco HTTPSClient会话

按IP地址划分的Poco HTTPSClient会话
EN

Stack Overflow用户
提问于 2018-05-29 12:04:47
回答 1查看 324关注 0票数 0

我试图使用Poco客户端会话通过特定的IP地址从主机名下载站点。例如,google.com有以下地址:

  • 173.194.221.113
  • 173.194.221.138
  • 173.194.221.102
  • 173.194.221.139
  • 173.194.221.100
  • 173.194.221.101

我想通过173.194.221.102获得https://google.com

我尝试了以下方法:

代码语言:javascript
运行
复制
std::make_unique<HTTPSClientSession>(SecureStreamSocket(SocketAddress(IPAddress("173.194.221.102"), 0), "https://google.com"));

这在“非法状态:无法为已经连接的会话设置端口号”例外情况下失败。

查看Poco源代码,使用此构造函数创建的SecureStreamSocket是连接的,HTTPSClientSession的构造函数试图设置https端口(443),但无法使用已经连接的套接字。

有什么更好的方法吗?

EN

回答 1

Stack Overflow用户

发布于 2018-08-29 08:19:48

应该是这样的:

代码语言:javascript
运行
复制
Poco::Net::initializeSSL();
Poco::Net::HTTPSessionFactory::defaultFactory().registerProtocol("https", new Poco::Net::HTTPSSessionInstantiator);

const Poco::SharedPtr<Poco::Net::InvalidCertificateHandler> certificateHandler(new Poco::Net::AcceptCertificateHandler(false));
const Poco::Net::Context::Ptr context(new Poco::Net::Context(Poco::Net::Context::CLIENT_USE, ""));

Poco::Net::SSLManager::instance().initializeClient(nullptr, certificateHandler, context);

Poco::URI serverUri("your address");
Poco::Net::HTTPClientSession* session = Poco::Net::HTTPSessionFactory::defaultFactory().createClientSession(serverUri);

希望能帮上忙。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50583979

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档