Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt Ввод/Вывод, Сеть. Межпроцессное взаимодействие _ QNetworkRequest & ssl

Автор: 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
}



Если пытаться долбиться не на https://qt.nokia.com, а на http://qt.nokia.com - то все ок, попадаю в слот OnReadyReadGET. Через браузер и https и http открываются нормально.

Спасибо!

Автор: Litkevich Yuriy 11.4.2010, 5:24

а у тебя точно Qt с поддержкой SSL собрана?

Автор: fsMark 11.4.2010, 9:50

В консоль ругается?

Автор: 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

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)