Russian Qt Forum

Qt => Работа с сетью => Тема начата: RedDog от Август 23, 2010, 10:59



Название: QSslSocket и авторизация по HTTPS
Отправлено: RedDog от Август 23, 2010, 10:59
Добрый день.
Необходимо авторизироваться в почтовом сервисе через WEB интерфейс, пытаюсь это сделать через QSslSocket.
отправляю запрос вида:
Код:
POST https://somehost.com HTTP/1.1
Host: somehost.com
User-Agent: C_Client
Accept: text/html
Accept-Language: ru,en-us;q=0.7,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Content-Length: 40

POSTDATA: login=ComeAccount@hotmail.com&passwd=SomePassword
в ответ приходит:
Цитировать
HTTP/1.1 200 OK
Cache-Control: no-cache
Connection: close
Date: Mon, 23 Aug 2010 07:48:40 GMT
Pragma: no-cache
Content-Type: text/html; charset=utf-8
Expires: Mon, 23 Aug 2010 07:47:40 GMT
Server: Microsoft-IIS/6.0
PPServer: PPV: 30 H: BAYIDSLGN1Q10 V: 0
X-Powered-By: ASP.NET
P3P: CP="DSP CUR OTPi IND OTRi ONL FIN"
Set-Cookie: MSPRequ=lt=1282549720&co=1&id=N; path=/;version=1
Set-Cookie: MSPOK=$uuid-8819596a-376a-42cb-914e-194b9198a6c5; domain=somehost.com;path=/;version=1
X-Frame-Options: deny
Content-Encoding: gzip
Vary: Accept-Encoding
Transfer-Encoding: chunked

a
�7c0
�Z[s��~�L��
�EɡH�/"ْ([�i�%_��h�������E�h&v�����N^�ئ]�u�D� �?��@)S�3�*2����s�sη�,�,,�*q��ݲ4���Vn�����ҧ��R�$&�\Bʰ��ń�Ge�M$�o5-�c����#nAD +��Wq���
��@�^uUs��]i�\Z��8���y�mP>.ƥ̢���b�4����`PWXYn��,��bԠ�Y G-�- ��E�E��" ��J�4�D���G�ܢ�B^H�,װGP�%�,0I^!�4��n% �VB�ͤ��E1��Z����CǬ�K4�x��E�"��-��z%��5��   ��n�M*��/����,��Kl��p=�S������;��ZN���6�,Tp�l�F��3bZdbFUu$��K�����.#C��c���"
�L~���oV:��ڝ�/����X���ֲ
>G۸=��?Fm��V���Ti���GpI](��.Šb�,�Pu

как это понять?
Или может я вообще не туда полез?
PS: пока мучаю пример из поставки QT "securesocketclient"


Название: Re: QSslSocket и авторизация по HTTPS
Отправлено: merke от Август 23, 2010, 11:28
Ты правильно полез=) Тебе пришел ответ на твой запрос, определяй кодировку и парси ответ.


Название: Re: QSslSocket и авторизация по HTTPS
Отправлено: RedDog от Август 23, 2010, 11:29
Ты правильно полез=) Тебе пришел ответ на твой запрос, определяй кодировку и парси ответ.
Да в том то и дело, что кодировка какая то непонятная... и вообще, кодировка ли это... походу двоичные данные


Название: Re: QSslSocket и авторизация по HTTPS
Отправлено: merke от Август 23, 2010, 11:38
Для того тебе и присылают заголовок, если пройтись по строчкам находишь: Content-Type: text/html; charset=utf-8


Название: Re: QSslSocket и авторизация по HTTPS
Отправлено: BRE от Август 23, 2010, 11:40
Для того тебе и присылают заголовок, если пройтись по строчкам находишь: Content-Type: text/html; charset=utf-8
И как мне кажется на это тоже стоит посмотреть:
Content-Encoding: gzip


Название: Re: QSslSocket и авторизация по HTTPS
Отправлено: RedDog от Август 23, 2010, 11:41
в utf-8 все именно так и выглядит, как написал
а что такое gzip?


Название: Re: QSslSocket и авторизация по HTTPS
Отправлено: merke от Август 23, 2010, 11:45
Этот заголовок сообщает принимающему информацию браузеру, что ему необходимо осуществить декомпрессию данных и затем обрабатывать как обычно. Также контент может быть передан стороннему приложению основываясь на информации, находящейся в заголовке Content-type.


Название: Re: QSslSocket и авторизация по HTTPS
Отправлено: merke от Август 23, 2010, 11:49
Вот вообще простой пример использования QSslSocket

Код:
int main(int argc, char **argv)
{
    QCoreApplication app(argc, argv);

    QSslSocket socket;
    socket.connectToHostEncrypted("www.paypal.com", 443);
    socket.write("GET / HTTP/1.0\r\n\r\n");
    while (socket.waitForReadyRead())
        qDebug() << socket.readAll().data();
}


Название: Re: QSslSocket и авторизация по HTTPS
Отправлено: merke от Август 23, 2010, 11:56
Почитай ещё здесь http://forum.qtfr.org/viewtopic.php?id=3388  ;)


Название: Re: QSslSocket и авторизация по HTTPS
Отправлено: merke от Август 23, 2010, 12:06
Ну и напоследок: http://www.qtcentre.org/threads/16472-QNetworkAccessManager-with-Accept-Encoding-gzip


Название: Re: QSslSocket и авторизация по HTTPS
Отправлено: RedDog от Август 23, 2010, 13:10
Спасибо за просвещение!
С ответом прояснилось, а вот с залогиниванием никак. В ответе приходит та же страница логина, т.е. не входит.
Куда смотреть?