Название: Http запрос Отправлено: tem1k от Январь 12, 2010, 22:02 Доброго времени суток, господа. Есть следующая проблема и требуется помощь.
Я пишу программу которая будет висеть в трее и периодически или по моему желанию будет проверять количество оставшихся денег на моем интернет счету. при нажатии кнопки update серверу посылается запрос: Код: QHttpRequestHeader header = QHttpRequestHeader ("POST","/index.cgi"); на него я получаю ответ: Код: <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> Насколько я понимаю в браузере я бы наблюдал переадресацию... хотя может я и не прав. Хотелось бы узнать что делать дальше. В итоге мне нужно получить страничку с данными о своем аккаунте (счет, время пополнения и т.п.) Каким образом можно это сделать ? Или может я неправильно уже что-то делаю ? Спасибо. Название: Re: Http запрос Отправлено: Dendy от Январь 12, 2010, 22:33 Так всё таки, что показывает браузер?
Название: Re: Http запрос Отправлено: Vass от Январь 13, 2010, 00:52 Возможно стоит попробовать прокинуть сигнал sslErrors ( const QList<QSslError> & errors ) на слот ignoreSslErrors () у вашего QHttp
Название: Re: Http запрос Отправлено: tem1k от Январь 13, 2010, 01:30 Так всё таки, что показывает браузер? Если вы про обычный браузер, то он показывает все правильно... А в моем случае я слотом viewbalance по сигналу done() считываю методом readAll() все с моего http и отправляю в QTextBrowser: Код: void Window::viewbalance() и получаю вышеуказанную ошибку 302 Found Название: Re: Http запрос Отправлено: tem1k от Январь 13, 2010, 01:35 Еще получается так что главная страница нашего биллинга такая - https://billing.oreol.net/index.cgi на ней есть форма ввода данных аторизации и т.п. Если в браузере ввести все и подтвердить страничка с данными о аккаунте имеет тот же адрес - https://billing.oreol.net/index.cgi. Может еще в этом дело...
Еще раз опишу задачу, возможно в первом посте я не достаточно ее описал, так вот мне нужно получить данные о моем интернет счету. Я посылаю http запрос (указан в первом посте) на сервер, как я понимаю он должен мне что-то ответить... Отвечает он ошибкой 302 Found и говорит мне что мол моя страница находится по такой-то ссылке (https://billing.oreol.net/index.cgi) но переходя по этой ссылке я оказываюсь в том же месте (начале). Название: Re: Http запрос Отправлено: tem1k от Январь 13, 2010, 01:37 Возможно стоит попробовать прокинуть сигнал sslErrors ( const QList<QSslError> & errors ) на слот ignoreSslErrors () у вашего QHttp Спасибо за совет. Сечас попробую. Updated Все равно такой же ответ от сервера: Код: <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> Название: Re: Http запрос Отправлено: Dendy от Январь 13, 2010, 09:33 Кстати, класс QHttp deprecated. Попробуйте использовать QNetworkAccessManager.
Название: Re: Http запрос Отправлено: zenden от Январь 13, 2010, 16:00 Кстати, класс QHttp deprecated. Попробуйте использовать QNetworkAccessManager. Так говорят во всех темах, посвященным QHttp, когда собственно на вопрос ответить не могут :) tem1k смотрите сигнал responseHeaderReceived ( const QHttpResponseHeader & resp ) Код
Название: Re: Http запрос Отправлено: Dendy от Январь 13, 2010, 17:00 Так говорят во всех темах, посвященным QHttp, когда собственно на вопрос ответить не могут :) Неудивительно, потому как за работоспособность QHttp уже никто не ручается. Точно так же как и в темах про по Qt3 советуют переходить на Qt4. Одно дело поддерживать старый код, другое, когда проект пишется самостоятельно. Название: Re: Http запрос Отправлено: Alex Custov от Январь 14, 2010, 04:14 Кстати, класс QHttp deprecated. Попробуйте использовать QNetworkAccessManager. а в документации по этому поводу тишина (4.5.3). Почему-то такие интересные новости внезапно узнаёшь из форумов, а не из документации. Уже раз 10 это видел, и на форуме, и а рассылке, и а багзилле, а в документации ни слова >:( Название: Re: Http запрос Отправлено: Авварон от Январь 14, 2010, 18:39 Цитировать The QHttp class provides an implementation of the HTTP protocol. Код: #include <QHttp> This class is obsolete. It is provided to keep old source code working. We strongly advise against using it in new code. This class is not part of the Qt GUI Framework Edition. Название: Re: Http запрос Отправлено: Alex Custov от Январь 14, 2010, 18:46 Цитировать The QHttp class provides an implementation of the HTTP protocol. Код: #include <QHttp> This class is obsolete. It is provided to keep old source code working. We strongly advise against using it in new code. This class is not part of the Qt GUI Framework Edition. Но это только в 4.6 написали, а 4.6 есть только в bleeding edge репах (Ubuntu lucid etc.) Название: Re: Http запрос Отправлено: DOOMer от Январь 14, 2010, 18:55 Цитата: Alex Custov link=topic=12026.msg75934#msg75934 Но это только в 4.6 написали, а 4.6 есть только в bleeding edge репах (Ubuntu lucid etc.) В описании QHttp в доках Qt 4.5.x уже реккомендовалось использовать вместо него в новом коде QNetworkAccessmanager.Цитировать This class provides a direct interface to HTTP that allows you to have more control over the requests and that allows you to access the response header fields. However, for new applications, it is recommended to use QNetworkAccessManager and QNetworkReply, as those classes possess a simpler, yet more powerful API. http://doc.trolltech.com/4.5/qhttp.html#details Название: Re: Http запрос Отправлено: Dendy от Январь 14, 2010, 19:22 Но это только в 4.6 написали, а 4.6 есть только в bleeding edge репах (Ubuntu lucid etc.) Ничего не имею против установки из репозиториев, но у разработчиков как правило всё тянется тарболами с сайта задолго до выхода релиза, а тем более попадании последнего в мейнстрим (-; Название: Re: Http запрос Отправлено: Alex Custov от Январь 14, 2010, 19:23 Цитата: Alex Custov link=topic=12026.msg75934#msg75934 Но это только в 4.6 написали, а 4.6 есть только в bleeding edge репах (Ubuntu lucid etc.) В описании QHttp в доках Qt 4.5.x уже реккомендовалось использовать вместо него в новом коде QNetworkAccessmanager.Так я же и не спорю, что рекомендовалось. Но между рекомендациями и официальным статусом "deprecated" может пройти много времени. Название: Re: Http запрос Отправлено: Авварон от Январь 14, 2010, 20:15 в 4.5 был депрекейтед... ща проверить не могу конечно, но помню - был)
Название: Re: Http запрос Отправлено: Alex Custov от Январь 14, 2010, 22:11 в 4.5 был депрекейтед... ща проверить не могу конечно, но помню - был) в документации 4.5.3 есть только рекомендация: http://doc.trolltech.com/4.5/qhttp.html Цитировать However, for new applications, it is recommended to use QNetworkAccessManager and QNetworkReply, as those classes possess a simpler, yet more powerful API. Причём причина указана не в том, что QHttp устарел, а в том, что QNetworkAccessManager более крут. Название: Re: Http запрос Отправлено: BlackTass от Январь 14, 2010, 22:36 Причём причина указана не в том, что QHttp устарел, а в том, что QNetworkAccessManager более крут. А вот кстати о крутости. НетворкАксессМанагер из-за своей высокоуровневости не все может что нужно иногда. Например у меня есть потребность натравливать кухттп на уже созданный сокет, что невозможно в нетворкаксессманагере.Название: Re: Http запрос Отправлено: Vexator от Август 12, 2010, 08:59 некропост, еще )
тут так и не нашли решения, а у меня аналогичная проблема, на запрос GET сервер возвращает 301... <title>301 Moved Permanently</title> </head><body> <h1>Moved Permanently</h1> <p>The document has moved <a href=" p.s. в качестве параметра get у передается именно тот адрес, что указан в переадресации.. т.е. по сути переадресация на саму себя... почему и с чем это едят? Название: Re: Http запрос Отправлено: bvn13 от Октябрь 07, 2010, 22:27 что-то мне подсказывает, что надо играться с заголовком запроса. Попробовать поставить другие значения агента, может, еще что-то....
|