Автор: Rocky 11.4.2010, 0:22
Всем привет! Подскажите пожалуйста, что не так. Вот такой код написал, а не работает:
CServerLinker::CServerLinker()
{
.....
m_pManager = new QNetworkAccessManager(this);
m_pReplyGET = m_pManager->get(QNetworkRequest(QUrl("https://qt.nokia.com")));
m_pReplyGET->ignoreSslErrors();
QObject::connect(m_pReplyGET, SIGNAL(readyRead()), this, SLOT(OnReadyReadGET()));
QObject::connect(m_pReplyGET, SIGNAL(error(QNetworkReply::NetworkError)), this, SLOT(OnError(QNetworkReply::NetworkError)));
#ifndef QT_NO_OPENSSL
QObject::connect(m_pReplyGET, SIGNAL(sslErrors(QList<QSslError>)), this, SLOT(OnSslErrors(QList<QSslError>)));
#endif
.......
}
void CServerLinker::OnError(QNetworkReply::NetworkError oNetworkError)
{
//попадаю сюда с ошибкой
//QNetworkReply::UnknownNetworkError 99 an unknown network-related error was detected
}
Если пытаться долбиться не на http
s://qt.nokia.com, а на http://qt.nokia.com - то все ок, попадаю в слот OnReadyReadGET. Через браузер и https и http открываются нормально.
Спасибо!
Автор: Litkevich Yuriy 11.4.2010, 5:24
а у тебя точно Qt с поддержкой SSL собрана?
Автор: Rocky 11.4.2010, 12:11
Цитата(Litkevich Yuriy @ 11.4.2010, 6:24)
а у тебя точно Qt с поддержкой SSL собрана?
ну вот в дебаге вот в этот блок я захожу
#ifndef QT_NO_OPENSSL
QObject::connect(m_pReplyGET, SIGNAL(sslErrors(QList<QSslError>)), this, SLOT(OnSslErrors(QList<QSslError>)));
#endif
Стало быть макрос QT_NO_OPENSSL
не определен => поддержка есть. Это под виндой - я вообще не компилил, а из пакета ставил (4.6.2).
Цитата
В консоль ругается?
Оказывается да. Воть:
Цитата
QSslSocket: cannot call unresolved function SSLv3_client_method
QSslSocket: cannot call unresolved function SSL_CTX_new
QSslSocket: cannot call unresolved function SSL_library_init
QSslSocket: cannot call unresolved function ERR_get_error
QSslSocket: cannot call unresolved function ERR_error_string
UPD
Оказывается нужно ставить openSsl чтоли ((
UPD
Ура! Заработало =)
Автор: Litkevich Yuriy 11.4.2010, 12:32
Цитата(Rocky @ 11.4.2010, 16:11)
Оказывается нужно ставить openSsl чтоли
где-то на форуме это уже было, нужно, чтобы dll'ки SSL'а, были доступны через переменную окружения PATH, во время работы приложения.
Плюс вот http://doc.crossplatform.ru/qt/4.4.3/requirements.html
Автор: Rocky 11.4.2010, 12:36
Цитата(Litkevich Yuriy @ 11.4.2010, 13:32)
Цитата(Rocky @ 11.4.2010, 16:11)
Оказывается нужно ставить openSsl чтоли
где-то на форуме это уже было, нужно, чтобы dll'ки SSL'а, были доступны через переменную окружения PATH, во время работы приложения.
Угу, либо их положить рядом с QtNetwork.dll