Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > [QT4] QHttp + ssl -> GET по https |
Автор: neosapient 1.7.2008, 18:10 | ||
Помогите новичку отправить запрос по https. Хочу загрузить данные, для начала в файл. На сайте надо проходить авторизацию. Прочел доку и кучу макулатуры литературы. В результате совсем запутался, а в голове каша. ![]() Вот понасобирал строчки кода, как бы его исправить
|
Автор: SABROG 2.7.2008, 12:41 | ||
|
Автор: neosapient 2.7.2008, 12:51 | ||||||
Всё в разброд пошло: стоит подключить заголовочный файл
И сразу при попытке скомпилировать выдаются ошибки
P.S. Для примера собирается проект, в котором Qhttp не используются вообще
P.P.S. Пути прописаны C:\Qt\4.4.0\include\QtNetwork |
Автор: SABROG 2.7.2008, 13:02 |
Похоже на косяки с компилятором. Версия Qt для Msvc или Mingw ? Чем собираеш ? Версия компилятора ? |
Автор: neosapient 2.7.2008, 13:21 | ||
На машине VC6 и VC7 (обычно использую VC7 ) Изначально ставил opensource Qt4.3 . Месяц назад скачал и поставил лицензионный пакет интегрированный под VC7 Qt4.4 Собираю компилятором VC7 через командную строку P.S. Что обидно, пример из opensource Qt4.3 \examples\network\http собирается А пример из лицензии Qt4.4 \examples\network\http НЕ собираеться - обидно -------------------- Так, а где объявлены переменные QT_BEGIN_NAMESPACE и QT_END_NAMESPACE и почему они не видяться? |
Автор: anatox91 2.7.2008, 13:25 | ||
а в .pro-файле есть строчка
? |
Автор: neosapient 2.7.2008, 13:34 | ||||||
О, помогло избавится от этих ошибок
Пошел тыкаться дальше Ждите постов |
Автор: neosapient 2.7.2008, 18:05 |
Почти готов сдаться ![]() В архиве пример из QT4.3 %QT4Dir%\examples\network\http Когда его запускаешь и указываешь цель скачивания - он подвисает при скачивании. Кто-нибудь решил эту проблему ? |
Автор: SABROG 2.7.2008, 18:43 |
Qt сам собирал ? С OpenSSL ? |
Автор: neosapient 2.7.2008, 19:00 | ||
Да, QT сам собрал.
Я так понял, что OpenSSL уже встроен в комплект. Выставил только флаги. Тема временно переезжает на http://forum.vingrad.ru/forum/topic-219086/anchor-entry1568000/0.html Надеюсь сюда ещё вернемся ![]() ------------- сутки спустя Ну вот и вернулись. Так я прав, что вариант OpenSSL уже входит в комплект QT ? ------------- спустя полдня OpenSSL надо ставить отдельно Решил пересобрать согласно статьям http://bombus.jrudevels.org/wiki/howto/psi_qt4 http://forum.sources.ru/index.php?showtopic=235803&view=showall |
Автор: neosapient 3.7.2008, 17:43 | ||
Пересобрал QT4 с флагом -openssl, впрочем так и было до того Попробовал собрать проект %QTDIR%\examples\network\securesocketclient Вылезла куча ошибок
Какую либу забыл подключить ? QtNetwork включена |
Автор: neosapient 4.7.2008, 15:20 | ||||
Скачал и установил http://www.slproweb.com/download/Win32OpenSSL-0_9_8g.exe переконфигурировал QT configure -openssl -I c:\openssl\include -L c:\openssl\lib собираю пример
появляются ошибки не найденной библиотеки
Что требуется подключить, чтобы собрать exe-шник ? Пример прикреплен в архиве |
Автор: neosapient 4.7.2008, 23:59 | ||||
Windows XP, VC7, QT 4.3.4 ----------------
Тут нашел ответ на ошибку не найденой QtNetworkd.lib / QtNetworkd4.lib http://prog.org.ru/forum/index.php/topic,6281.0.html Надо скоректировать строки %QTDIR%\src\network\network.pro
Затем следует пересобрать QtNetworkd.lib / QtNetworkd4.lib |
Автор: neosapient 5.7.2008, 10:50 | ||||||||
Вроде получилось httprequest.h
httprequest.cpp
main.cpp
main.pro
|
Автор: neosapient 5.7.2008, 11:08 | ||||
Ещё вопрос, чтоб завершить тему. Код я представил в посте выше. Надо научиться обрабатывать ошибки SSL. Я правильон понимаю, что следует подключить обработку ошибки от QSslSocket *socket сигнала SIGNAL(sslErrors ( const QList<QSslError> & errors ) на QHttp *http слот ignoreSslErrors()
Либо из-за того , что сокет ssl передан объекту qhttp, то от QHttp *http сигнал SIGNAL(sslErrors ( const QList<QSslError> & errors ) будет приходить на слот ignoreSslErrors()
Откуда приходит сигнал ? Какая форма записи будет правильной ? |
Автор: neosapient 4.8.2008, 14:56 |
Добрый день. Простите, что вновь поднимаю эту ветку форума, но по непонятной мне причине программа перестала работать. Пример программы приведен двумя постами выше, ничего не менял. Логин и пароль ввожу правильно. Если открываю страницу браузером, то проблем нет. Программа подключается к указаному серверу. Висит секунд 5-10, затем вызавается void HttpRequest::httpRequestFinished(int requestId, bool error) В переменной error - стоит флаг true. Распечатываю ошибки qDebug() << http->errorString(); qDebug() << socket->errorString(); Мне печатается "Host not found" Как избавиться от косяка ? |
Автор: SABROG 4.8.2008, 16:46 |
Название хоста передаешь с "http" ? |
Автор: neosapient 4.8.2008, 19:33 |
>> Название хоста передаешь с "http" ? Название хоста ввожу с "https" --------------------------- Сейчас начинаю думать в сторону загружености сети С утра всё работало. Днем не работает, хотя страницу возможно вытянуть через браузер. Сейчас (к концу вечера) опять работает. Может можно как либо повысить приоретет запроса старицы (хотя подозреваю что вопрос абсурдный) Итак, код не менял, а прога то работает, то нет. Думаю, что все зависит от загружености сети. Можно ли как-либо управлять ситуацией, чтоб страница грузилась? |
Автор: SABROG 4.8.2008, 20:36 | ||
Надо без (для метода setHost). |
Автор: neosapient 7.8.2008, 14:38 | ||
Попробовал "www.someurl.com/sometext.htm" Если работать без "http" или "https", то сразу выдается сообщение с ошибкой "No server set to connect to" |
Автор: SABROG 7.8.2008, 15:00 | ||
Дык извините, вы имя хоста передаете или Url ? Only "www.someurl.com" без /sometext.htm тогда. |