我为 android 构建了 openssl 和 POCO 库。在我的应用程序中,我尝试使用 SSL。问题是当我创建处理程序时,它挂起并且永远不会返回。无论我使用哪种类型的证书处理程序,都会发生这种情况。这里可能出了什么问题?
我的代码:
Poco::Net::initializeSSL();
// Creating this handler is where it hangs.
SharedPtr<Poco::Net::InvalidCertificateHandler> pCert = new AcceptCertificateHandler(false);
//It never gets to this line.
Context::Ptr pContext = new Context(Context::CLIENT_USE, "", "", "", Context::VERIFY_NONE, 9, true, "ALL:!ADH:!LOW:!EXP:!MD5:@STRENGTH");
最佳答案
哦,哇哦,有人在 Android 上做 POCO/SSL 了。欢迎来到 hell :P
无论如何,令人困惑的是你将它卡在那里 - 我假设你已经用打印件进行了验证?也许你的调用线程被 Android 端杀死了?显然你不应该从 UI 线程调用它,所以就是这样。
如果这些都没有问题,那么我不确定问题是什么。我的 init SSL 几乎就是你的:
Poco::Net::initializeSSL();
Poco::SharedPtr<Poco::Net::InvalidCertificateHandler> accept_cert_handler =
new Poco::Net::AcceptCertificateHandler(false);
Poco::SharedPtr<Poco::Net::PrivateKeyPassphraseHandler> console_handler =
new Poco::Net::KeyConsoleHandler(false);
Poco::Net::Context::Ptr context =
new Poco::Net::Context(Poco::Net::Context::CLIENT_USE, "", "", "",
Poco::Net::Context::VERIFY_NONE, 9, true,
"ALL:!ADH:!LOW:!EXP:!MD5:@STRENGTH");
Poco::Net::SSLManager::instance().
certificateHandlerFactoryMgr().
setFactory("accept_handler",
new Poco::Net::CertificateHandlerFactoryImpl<AcceptCertificateHandler>());
Poco::Net::SSLManager::instance().initializeClient(console_handler,
accept_handler,
context);
关于android - 使用 ssl 时 POCO 库卡在 Android 上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23661331/