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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Проблема с авторизацией с помощью QNetworkAccessManager  (Прочитано 2571 раз)
And
Гость
« : Октябрь 17, 2016, 15:04 »

Добрый день, уважаемые коллеги!
Столкнулся с такой проблемой. Не получается авторизоваться на веб-сервере. Написал post и get запрос, при отправке которых возвращается страница авторизации. Старался придерживаться рекомендаций ассистента и советов со смежных тем форума. Отчаялся найти ошибку. Буду признателен, если кто то сможет помочь.

POST-запрос
Код
C++ (Qt)
void ModemMoxaClient::slotPostRequest()
{
   //URL
   QUrl url("http://192.168.127.253/home.asp");  
   //time
   std::stringstream lasttime;
   boost::posix_time::ptime epoch( boost::gregorian::date( 1970, 1, 1 ) );
   boost::posix_time::ptime date(  boost::gregorian::day_clock::local_day() );
   lasttime << std::hex << std::setw( 2 ) << (date - epoch).total_seconds();
   std::string str = lasttime.str();
   QString timestr(QString::fromStdString(str));
   QByteArray time;
   time.append(timestr);
   //HTML FORM URL
   QByteArray cookie;
   QString account("0");
   QString password("");
   QString x("50");
   QString y("10");
   cookie += "account=" + QUrl::toPercentEncoding( account.toUtf8() );
   cookie += "&password=" + QUrl::toPercentEncoding( password.toUtf8() );
   cookie += "&Loginin.x=" + QUrl::toPercentEncoding( x.toUtf8());
   cookie += "&Loginin.y=" + QUrl::toPercentEncoding( y.toUtf8() );
   //cookie
   QList<QNetworkCookie> sendcookies;
   sendcookies.append(QNetworkCookie("AccountName508", "admin"));
   sendcookies.append(QNetworkCookie("Password508", "202cb962ac59075b964b07152d234b70"));
   sendcookies.append(QNetworkCookie("lasttime", "202cb962ac59075b964b07152d234b70"));
   m_manager->cookieJar()->setCookiesFromUrl(sendcookies, url);
   //request
   QNetworkRequest postRequest;
   postRequest.setUrl(QUrl(url));
   //Headers
   postRequest.setRawHeader("Host", "192.168.127.253");
   postRequest.setHeader(QNetworkRequest::ContentTypeHeader,"application/x-www-form-urlencoded");
   postRequest.setRawHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:49.0) Gecko/20100101 Firefox/49.0");
   postRequest.setRawHeader("Accept", "http://192.168.127.253");
   postRequest.setRawHeader("Accept-Language", "ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3");
   postRequest.setRawHeader("Accept-Encoding", "gzip, deflate");
   postRequest.setRawHeader("Referer", "http://192.168.127.253/auth/accountpassword.asp");
   postRequest.setRawHeader("Host", "http://192.168.127.253");
 
   //reply
   QNetworkReply* postReply = m_manager->post(postRequest, cookie);
   connect( m_manager, SIGNAL( finished(QNetworkReply*)), this, SLOT(replyFinished(QNetworkReply*)) );;
}

SLOT replyFinished(QNetworkReply*)
Код
C++ (Qt)
void ModemMoxaClient::replyFinished(QNetworkReply* reply)
{
   if( reply->error() == QNetworkReply::NoError )
   {
       QUrl url(reply->url());
       ui->webView->setUrl(url);
   }
   else
   {   qDebug()<<reply->errorString();   }
 
   reply->deleteLater();
}
« Последнее редактирование: Октябрь 17, 2016, 15:37 от gil9red » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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