Russian Qt Forum
Ноябрь 23, 2024, 08:28 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2 3   Вниз
  Печать  
Автор Тема: Проблема с Ssl  (Прочитано 19624 раз)
Денис
Гость
« : Январь 24, 2014, 19:52 »

Есть строка кода для доступа к сайту https:
Код:
connect(reply, SIGNAL(sslErrors(QList<QSslError>)), reply, SLOT(ignoreSslErrors()));

В результате обращение к сайту заканчивается ошибкой, а в выводе приложения следующая строка:
QObject::connect: No such signal QNetworkReplyImpl::sslErrors(QList<QSslError>)

Что я не так сделал, что ошибки Ssl не перехватываются ?
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #1 : Январь 24, 2014, 19:57 »

Написано же, что у объекта reply нет сигнала sslErrors(QList<QSslError>)  Улыбающийся
Записан

Денис
Гость
« Ответ #2 : Январь 24, 2014, 20:02 »

Как раз он у него есть, но за макросом:
Код:
Q_SIGNALS:
    void metaDataChanged();
    void finished();
    void error(QNetworkReply::NetworkError);
#ifndef QT_NO_SSL
    void encrypted();
    void sslErrors(const QList<QSslError> &errors);
#endif

но где он определяется ( QT_NO_SSL ) Непонимающий
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #3 : Январь 24, 2014, 20:14 »

А если в лоб: раньше вызыва инклуда класса, написать #undef QT_NO_SSL ?
Записан

Денис
Гость
« Ответ #4 : Январь 24, 2014, 20:53 »

Не помогло, даже если его внутрь класса вставить, все равно не видит сигнала и запрос к сайте заканчивается с ошибкой ...
Записан
Figaro
Гость
« Ответ #5 : Январь 25, 2014, 07:37 »

А Кутя точно откомпилирована с поддержкой SSL?
Записан
Денис
Гость
« Ответ #6 : Январь 25, 2014, 13:23 »

а зачем его компилировать с поддержкой SSL, я так понимаю он как макрос в настройках компилятора ?
Записан
lesav
Частый гость
***
Offline Offline

Сообщений: 235


qnx.org.ru


Просмотр профиля WWW
« Ответ #7 : Январь 25, 2014, 14:05 »

Если Qt собран без опции -openssl то поддержки оного не будет.

Примерно как-то так
Код:
configure.exe   .......   -openssl -I C:\OpenSSL-Win32\Include -L C:\OpenSSL-Win32\Lib
Записан

Денис
Гость
« Ответ #8 : Январь 25, 2014, 14:41 »

А без пересборки никак нельзя получить доступ к HTTPS ?
Записан
Serr500
Гость
« Ответ #9 : Январь 25, 2014, 18:26 »

Можно. Берём OpenSSL, QTcpSocket и прикручиваем...  Подмигивающий Но проще перекомпилировать.
Записан
Figaro
Гость
« Ответ #10 : Январь 26, 2014, 07:02 »

Точнее QTcpSocket не будет работать... но если ручками - тогда ssl либо и нативными функциями работаем
Записан
Денис
Гость
« Ответ #11 : Февраль 06, 2014, 21:48 »

Мужики, помоги щеэ, перекомпилил, но разрослась библиотека примеров example ?
Она, аж 21 ГБ весит ... Можно было в настройках при компиляции ограничить размер примеров ?
Или я как-то неправильно перекомпилировал ?
Записан
Serr500
Гость
« Ответ #12 : Февраль 06, 2014, 21:52 »

Мусор от компилятора остался. *.obj и т.п. Думаю, ещё и две версии собрались - debug и release. Помогает make clean.
Записан
Денис
Гость
« Ответ #13 : Февраль 06, 2014, 22:57 »

Спасибо, уже почистил. Но что-то перекомпиляция особо не помогла. Старые ошибки исчезли, а новые появились:
Код:
QSslSocket: cannot call unresolved function SSLv23_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
« Последнее редактирование: Февраль 06, 2014, 23:17 от Денис » Записан
Денис
Гость
« Ответ #14 : Февраль 07, 2014, 00:19 »

Для тех кому интересно, исправляются ошибки добавлением файлов libeay32.dll and ssleay32.dll в System32.
Но вот вопрос, ошибок нету но сервер отвечает мне браузерным скриптом:
Код:
<html>
<head><title>Loading</title></head>
<body>
<p>Please wait...</p>
<script>function xdec(data){
var o="HkKw2qhsBZXouyvDVTfxQ6ELIU4N8RztJag5Y-_mG1pOiAFlM7jS0nbrcCP39deW=";
var o1,o2,o3,h1,h2,h3,h4,bits,i=0,ac=0,dec="",tmp_arr=[];
if(!data)
{
     return data
}

data+='';

do
{
     h1=o.indexOf(data.charAt(i++));
     h2=o.indexOf(data.charAt(i++));
     h3=o.indexOf(data.charAt(i++));
     h4=o.indexOf(data.charAt(i++));
     bits=h1<<18|h2<<12|h3<<6|h4;
     o1=bits>>16&0xff;
     o2=bits>>8&0xff;
     o3=bits&0xff;
     if(h3==64){tmp_arr[ac++]=String.fromCharCode(o1)
}
else if(h4==64)
{
    tmp_arr[ac++]=String.fromCharCode(o1,o2)
}
else
{
    tmp_arr[ac++]=String.fromCharCode(o1,o2,o3)
}
}

while(i<data.length);

dec=tmp_arr.join('');
return dec};
document.cookie=xdec('u_ZgI5V7ywRYvwBSywa-vhuruSk-uSuCIxRYywICywVdVb7lzh-mNY8').replace(String.fromCharCode(0),'').split('').reverse().join('');
location.href='/';</script></body></html>\n

Есть ли класс для его исполнения ?
« Последнее редактирование: Февраль 07, 2014, 00:22 от Денис » Записан
Страниц: [1] 2 3   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.162 секунд. Запросов: 23.