我为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");
答案 0 :(得分:3)
哦,其他人在Android上做POCO / SSL。欢迎来到地狱:P
无论如何,你会把它挂在那里令人困惑 - 我假设你已经通过打印验证了吗?也许你的调用线程正在从Android端被杀掉?显然你不应该从UI线程中调用它,所以就是这样。
如果没有任何问题,那么我不确定问题是什么。我的初始化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);
答案 1 :(得分:0)
我实际上通过使用Android make文件(.mk)构建POCO而不是像我一样使用独立工具链来实现这一点。我不知道区别是什么,但它现在正常运作。