QHttp, небольшой вопрос |
Здравствуйте, гость ( Вход | Регистрация )
QHttp, небольшой вопрос |
XpycT |
3.8.2009, 16:29
Сообщение
#1
|
Студент Группа: Участник Сообщений: 43 Регистрация: 7.7.2009 Пользователь №: 883 Спасибо сказали: 0 раз(а) Репутация: 0 |
Есть программа, которая в данный момент использует 5 запросов
Причем первые три выполняются друг за другом. Хотел узнать ваше мнение, как правельнее это оформить.
Или может есть другой способ? Просто смотрел и в книгах и в примерах, но там более одного запроса за раз не происходит. А так как web-запросами работал только в PHP, то не знаю как будет правильнее |
|
|
ViGOur |
3.8.2009, 17:14
Сообщение
#2
|
Мастер Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: 40 |
Тебе все равно придется устанавливать 2 http иоединения, отправлять данные и ждать на них и ...
Потому думаю, что 1 вариант. Да и во 2 варианте я не совсем понял, что ты хотел сказать. |
|
|
XpycT |
3.8.2009, 18:23
Сообщение
#3
|
Студент Группа: Участник Сообщений: 43 Регистрация: 7.7.2009 Пользователь №: 883 Спасибо сказали: 0 раз(а) Репутация: 0 |
Да и во 2 варианте я не совсем понял, что ты хотел сказать. Уже сам вижу что не понятно Суть второго варианта - один QHttp и переменная, которая определяет тип действия. Вот допустим кусок кода, который сейчас стоит Раскрывающийся текст
Тобишь просто перебираю действия через switch...case |
|
|
ViGOur |
3.8.2009, 19:48
Сообщение
#4
|
Мастер Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: 40 |
Тот код, что ты привел всеравно понадобится, так как тебе нужно обрабатывать что возвращает сервер в любом случае как для 1 оединения так и для 2.
Тебе же нужны соединения с 2 серваками, значит 2 http соединения. Получил данные от одного передал другому, а во время передачи 2 получаешь следующие данные с 1 и т.д. |
|
|
Elfinit |
3.8.2009, 22:31
Сообщение
#5
|
Участник Группа: Участник Сообщений: 127 Регистрация: 17.3.2009 Из: Казань Пользователь №: 619 Спасибо сказали: 7 раз(а) Репутация: 1 |
У меня похожая ситуация была (параллельно надо авторизоваться/обмениваться данными с несколькими сайтами, и при этом информацию о прогрессе выводить на виджет). Я сделал разных наследников (просьба сильно не ругаться на нерациональность) класса QHttp (типа GetRequest, PostRequest, PutRequest) для разных видов запросов (в конструторах сразу передаю URL, хидеры, данные и пр.), внутри кого надо с кем надо соединил, и в слоте http_done (куда приходит сигнал done) наружу сделал эмит того, что сервер сказал, и сразу deleteLater().
В итоге запрос получается довольно лаконичный, что-то вроде:
Соглашусь, что для каждого запроса заново создавать QHttp, возможно, неправильно, зато потом кодить удобно, когда куча разнотипных запросов много куда. |
|
|
ViGOur |
4.8.2009, 9:08
Сообщение
#6
|
Мастер Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: 40 |
для каждого запроса заново создавать QHttp, возможно, неправильно Никто не говорит, что не правильно. Просто нет смысла держать соединение, если оно пока не нужно.Те же интернет браузеры по подобному принципу работают, создают подключение для получения данных, а потом разрывают его, чтобы в следующий раз снова установить. Просто как в твоем так и в данном случае лучше использовать несколько HTTP объектов, чтобы не было путаницы и легче потом было читать код. |
|
|
SABROG |
4.8.2009, 11:11
Сообщение
#7
|
Профессионал Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: 34 |
QHttp в Qt 4.6 он depricated. Тролли пытаются от него избавится. IMHO лучше использовать QNetworkAccessManager.
|
|
|
XpycT |
4.8.2009, 11:36
Сообщение
#8
|
Студент Группа: Участник Сообщений: 43 Регистрация: 7.7.2009 Пользователь №: 883 Спасибо сказали: 0 раз(а) Репутация: 0 |
|
|
|
maxvanceffer |
19.8.2009, 14:40
Сообщение
#9
|
Студент Группа: Участник Сообщений: 72 Регистрация: 30.5.2009 Из: Moldova Пользователь №: 790 Спасибо сказали: 0 раз(а) Репутация: 0 |
Ребята не используйте http так как в манах заявлена что его в селдуших версиях заменят. Я использую QNetworkManager ! Он проше и может работать с очередью запросов!
|
|
|
Elfinit |
25.8.2009, 20:18
Сообщение
#10
|
Участник Группа: Участник Сообщений: 127 Регистрация: 17.3.2009 Из: Казань Пользователь №: 619 Спасибо сказали: 7 раз(а) Репутация: 1 |
А как при использовании QNetworkAccessManager получить StatusCode http-response'а?
нашёл, QNetworkRequest::HttpStatusCodeAttribute Сообщение отредактировал Elfinit - 25.8.2009, 20:15 |
|
|
Текстовая версия | Сейчас: 3.1.2025, 1:37 |