Здравствуйте, гость ( Вход | Регистрация )
eldar85 | Дата 11.8.2010, 17:28 |
да я подкоректировал немного с таймаутом... | |
Алексей1153 | Дата 11.8.2010, 16:46 |
eldar85, не во всякой задаче удасться так сделать Ну а в твоём решении ещё не помешало бы таймаутом задаться, а то навсегда может зависнуть |
|
eldar85 | Дата 11.8.2010, 15:48 |
решил задачу с помощью простого цикла))))
|
|
BRE | Дата 11.8.2010, 14:27 |
Ты про синхронную загрузка? На форуме были темы в которых этот способ обсуждался. Поищи. Посмотри на класс QEventLoop. |
|
eldar85 | Дата 11.8.2010, 14:18 |
как все неудобно(( я думал перейтис cUrl на Qt шные методы работы с сетью будет удобнее, но оказалось все вообще стремно в библиотеке QNetwork либо просто по другому как то делать нужно... по идее я хотел чтобы я мог в главном методе start() вызвать к примеру загрузку одной страницы, затем в этом же старте получив ответ от сервера в строку получить нужные данные тут же start() отправить пост запрос с полученными данными от первой загрузки и так далее... но получается одна ерунда, единственное что получилось вызвать в главном методе загрузку страницы с сервера и слотом поместить ее в переменную но только после того как произведен выход из start() и exec(). а мне нужно чтобы в start() вызвалось exec() затем дождалось окончания загрузки, получило ответ от exec() и только потом тут же в start() начало действие дальше как в обычном с++ когда вызываешь из одной функции другую функцию то первая не завершает работу пока функция вызванная внутри нее не завершит работу... |
|
Алексей1153 | Дата 11.8.2010, 13:33 |
когда отправляешь запросы, складываешь их в список. Когда станут приходить ответы - надо будет сопоставить ответ с запросом и обработать блин, там std, а не atd |
|
eldar85 | Дата 11.8.2010, 13:24 |
да такое я пробывал
не помогает... а про atd::map<время,QString> m_RequestList; я не понял, как это? |
|
Алексей1153 | Дата 11.8.2010, 13:11 |
ну дык... как то так:
А для составления требуемого порядка - завести ассоциативный упорядоченный список по времени посылки сообщения atd::map<время,QString> m_RequestList; , а так же список для принимаемых сообщений (если надо) А дальше - логика |
|
eldar85 | Дата 11.8.2010, 12:41 |
как же я тогда получу ответ вот сдесь
и смогу в этой же функции парсить ответ сервера и делать еще несколько пост запросов с выпарсинными данными из первого запроса? |
|
Алексей1153 | Дата 11.8.2010, 12:29 |
eldar85, для асинхронного обмена объект должен жить дольше времени работы с ним. У тебя это выполняется? Например, объект должен быть членом основного класса Цитата ну и сам вызов в главном классе network *net = new network; QString xStr = net->load("http://www.forismatic.com/api/1.0/")->setPost("method=getQuote&format=xml")->exec(); qDebug() << xStr; здесь код должен быть разделён по меньшей мере на 3 части: 1) процедура создания объекта для асинхронной работы (это может быть и в конструкторе главного класса)
2) процедура запроса данных
3) слот приёма данных
|
|
Просмотр темы полностью (откроется в новом окне) | |
Текстовая версия | Сейчас: 18.4.2024, 9:38 |