crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> QSslSocket::VerifyNone, или как отключить проверку сертификата
Reklats
  опции профиля:
сообщение 20.2.2011, 22:07
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 2
Регистрация: 20.2.2011
Пользователь №: 2425

Спасибо сказали: 0 раз(а)




Репутация:   0  


Приветствую всех.

Передо мной стоит задача - авторизоваться на защищённом сайте. Basiс авторизация, сертификат самоподписаный. Для этого курил пример http, тем более там это всё есть. Но не тут то было.

Собрал пример (http), захожу на нужный мне сайт, вываливается окно авторизации, потом окно ошибок сертификата и ... Снова окно ошибок, потом снова окно ошибок сертификата и так по кругу. Самое интерессное, при перезапуске примера, авторизация проходит (дело в куках?).

После 3х дней раздумий решил просто отменить проверку сертификата. Но вот как это сделать ? В доках написано, что изменять параметры конфигурации SSL надо до запроса. Сделал так:

void MyClass::startRequest(QUrl *url)
{
    qDebug() << "startRequest :" << trUtf8("Шлю запрос");
    qDebug() << "startRequest : 1)" << reply->sslConfiguration().peerVerifyMode();

    QSslConfiguration sslConfiguration = reply->sslConfiguration();
    sslConfiguration.setPeerVerifyMode(QSslSocket::VerifyNone);
    reply->setSslConfiguration(sslConfiguration);

    reply = qnam.get(QNetworkRequest(*url));
    qDebug() << "startRequest : 2)" << reply->sslConfiguration().peerVerifyMode();
}


Компилится нормально, запускается и в консоль вываливается вот это:
slotDownloadButton : "Кнопка нажата" 
startRequest : "Шлю запрос"
Error -
RtlWerpReportException failed with status code :-1073741823. Will try to launch the process directly


Я уже и не знаю что делать. Гуглил. Ничего не нашёл.

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Reklats
  опции профиля:
сообщение 25.2.2011, 17:10
Сообщение #2


Новичок


Группа: Новичок
Сообщений: 2
Регистрация: 20.2.2011
Пользователь №: 2425

Спасибо сказали: 0 раз(а)




Репутация:   0  


Как оказалось проблема была в другом - неверная Basic авторизация. Как я выяснил, в примере network\http ошибка ибо не достаточно просто в слот, который запускается в ответ на сигнал о запросе авторизации, поставить нужные имя и пароль. Нужно ещё добавить заголовок "Authorization". Вот пример, не мой, но зато немного посложнее моего. Тут представлена Basic авторизация POST запросом:

QNetworkAccessManager* netMan;
netMan = new QNetworkAccessManager(this);
QNetworkRequest request;


request.setUrl(QUrl("Request Url"));
request.setRawHeader("Authorization", "Basic " + QByteArray(QString("%1:%2").arg("Username").arg("Password").toAscii()).toBase64());

QDateTime currTime = QDateTime::currentDateTime();
QString timeData = currTime.toString("MM/dd/yyyy hh:mm:ss");
QString mySt = status + " " + timeData;
QByteArray myData(mySt.toUtf8(),mySt.length());

QNetworkReply* reply = netMan->post(request,myData);
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 28.3.2024, 13:19