我试图使用Poco客户端会话通过特定的IP地址从主机名下载站点。例如,google.com有以下地址:
我想通过173.194.221.102获得https://google.com
我尝试了以下方法:
std::make_unique<HTTPSClientSession>(SecureStreamSocket(SocketAddress(IPAddress("173.194.221.102"), 0), "https://google.com"));
这在“非法状态:无法为已经连接的会话设置端口号”例外情况下失败。
查看Poco源代码,使用此构造函数创建的SecureStreamSocket是连接的,HTTPSClientSession的构造函数试图设置https端口(443),但无法使用已经连接的套接字。
有什么更好的方法吗?
发布于 2018-08-29 00:19:48
应该是这样的:
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);
希望能帮上忙。
https://stackoverflow.com/questions/50583979
复制相似问题