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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Обработка редиректа для QNetworkAccessManager  (Прочитано 3604 раз)
vohulg
Гость
« : Май 29, 2014, 09:19 »

Доброго дня.
Решаю задачу доступа к архиву переписки для mail.ru Агент

Для начала пытаюсь авторизоваться на почтовом аккаунте mail.ru.

   
Код:

    QUrl apiUrl(QString("https://auth.mail.ru/cgi-bin/auth?from=splash"));
    QString requestString = "Domain=mail.ru&Login=testov-79&Password=testtest&new_auth_form=1&saveauth=1";
    QNetworkRequest request(apiUrl);
   
    QNetworkAccessManager * pManager = new QNetworkAccessManager;
    connect(pManager, SIGNAL(finished(QNetworkReply*)), this, SLOT(replyFinish(QNetworkReply*)));

   QNetworkCookieJar *cookieJar = new QNetworkCookieJar(pManager);
    pManager->setCookieJar(cookieJar);

      pManagerp->post( request, requestString.toUtf8());


В функции обработчике ответа
Код:
void replyFinish(QNetworkReply* reply)
{
       QString answer = QString::fromUtf8(reply->readAll());
        qDebug() << answer;
}
мне приходит такой ответ

Код:
"<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1251">
<script language="JavaScript"><!--
    window.location.replace("https://e.mail.ru/messages/inbox/?back=1");
// --></script>
<meta http-equiv="refresh" content="0;url=https://e.mail.ru/messages/inbox/?back=1">
</head>
<body></body>
</html>
"



1. Для того чтобы проверить прошла ли авторизация мне надо посмотреть какие куки установились ?
Как это сделать ?

2. Я так понимаю что мне нужно выполнить редирект на адрес https://e.mail.ru/messages/inbox/?back=1. Где его выполнить - в обработчике
Код:
void replyFinish(QNetworkReply* reply)
или после выполнения 
Код:
pManagerp->post( request, requestString.toUtf8());

3. Для редиректа надо создавать новый объект
Код:
QNetworkAccessManager * pManagerRedirect = new QNetworkAccessManager;
или надо использовать уже созданный
Код:
pManager 
, чтобы принятые куки были посланы вместе в запросом ?

Буду благодарен за подсказку так как с QNetworkAccessManager ранее не работал.

Записан
vohulg
Гость
« Ответ #1 : Май 29, 2014, 09:39 »

Как просмотреть куки нашел -
Код:
 qDebug() << "getAllCookies: " << cookieJar->getAllCookies(); 

Куки показывают что авторизация прошла успешно. Теперь надо как то выполнить редирект на страницу просмотра переписки агента
Записан
VPS
Гость
« Ответ #2 : Май 29, 2014, 10:19 »

Посмотрите, как реализовано перенаправление в примере "HTTP Example" (в ассистенте)...
Записан
carrygun
Гость
« Ответ #3 : Май 30, 2014, 04:35 »

Почитать это и это.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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