Russian Qt Forum
Ноябрь 23, 2024, 20:41 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как получить состояние при работе с QNetworkAccessManager  (Прочитано 7270 раз)
QCasper
Гость
« : Октябрь 22, 2010, 12:51 »

В QHttp есть замечательный сигнал stateChanged, который сообщает о текущем состоянии запроса. Как получить нечто подобное, используя QNetworkAccessManager и QNetworkReply (ну или используя дополнительные классы, связанные с этими двумя)?
Записан
sendevent
Гость
« Ответ #1 : Октябрь 22, 2010, 13:22 »

см. сигналы:
QNetworkReply
QNetworkAccessManager
и, если нужны только хттп(с), можно глянуть на модуль QtWebKit.

upd: глянул на stateChanged - поторопился, не совсем то... можно сэмулировать "нечто подобное" (сендин/ридин/иррор), но всякие хостлукап/коннектин - видимо, нет.
« Последнее редактирование: Октябрь 22, 2010, 13:26 от sendevent » Записан
BRE
Гость
« Ответ #2 : Октябрь 22, 2010, 13:47 »

но всякие хостлукап/коннектин - видимо, нет.
SocketState QAbstractSocket::state () const
Цитировать
QAbstractSocket::UnconnectedState   0   The socket is not connected.
QAbstractSocket::HostLookupState   1   The socket is performing a host name lookup.
QAbstractSocket::ConnectingState   2   The socket has started establishing a connection.
QAbstractSocket::ConnectedState   3   A connection is established.
QAbstractSocket::BoundState   4   The socket is bound to an address and port (for servers).
QAbstractSocket::ClosingState   6   The socket is about to close (data may still be waiting to be written).
QAbstractSocket::ListeningState   5   For internal use only.
Записан
QCasper
Гость
« Ответ #3 : Октябрь 22, 2010, 15:45 »

BRE, а можно короткий пример кода, как с участием QNetworkAccessManager получить хостлукап?
Записан
BRE
Гость
« Ответ #4 : Октябрь 22, 2010, 17:10 »

BRE, а можно короткий пример кода, как с участием QNetworkAccessManager получить хостлукап?
Нет.  Улыбающийся
Потому, что я полез смотреть как получить хоть какую-то ссылку на рабочий сокет и пока ничего не нашел.  Улыбающийся
Записан
QCasper
Гость
« Ответ #5 : Октябрь 23, 2010, 13:59 »

Нет.  Улыбающийся
Потому, что я полез смотреть как получить хоть какую-то ссылку на рабочий сокет и пока ничего не нашел.  Улыбающийся

Было бы всё так просто, я бы эту тему не создавал Подмигивающий
Записан
GNU Dimarik
Гость
« Ответ #6 : Октябрь 24, 2010, 17:54 »

Не пойму вашей любви к QNetworkAccessManager.А что если придется использовать KeepAlive?
Что тогда делать будешь?
Имхо пиши на сокетах,QNetworkAccessManager это черный ящик для быстрого решения проблемы без лишних сложностей,но в обмен ты платишь тем,что не можешь контролировать ситуацию.
Записан
ufna
Гость
« Ответ #7 : Октябрь 25, 2010, 09:56 »

чорт, да вся Qt это чорный ящик, я ж не могу контролировать машинный код! ((((
Записан
sne
Гость
« Ответ #8 : Октябрь 25, 2010, 15:52 »

Немножко офф-топика, если позволите.

QHttp нонче имеет статус депрекэйтед, в то же время я не нашел как в QNetworkAccessManager использовать не дефолтный ip системы.
Т.е. есть сервер с 100+ ip адрессами, на них свои домены, необходимо с них (с ip) отсылать HTTP запросы. Раньше можно было забиндить ip для QTcpSocket и назначить его QHttp.

Подводя итог, мя негодует. Как можно объявлять классы устаревшими, когда замены им нет!?
Записан
QCasper
Гость
« Ответ #9 : Октябрь 26, 2010, 16:33 »

Не пойму вашей любви к QNetworkAccessManager.А что если придется использовать KeepAlive?
Что тогда делать будешь?

Запью с горя.
Это не столько любовь, сколько следование советам разработчиков библиотеки - им виднее, чем мне.

Имхо пиши на сокетах,QNetworkAccessManager это черный ящик для быстрого решения проблемы без лишних сложностей,но в обмен ты платишь тем,что не можешь контролировать ситуацию.

Вот представь, мне нужно по http грузить данные и показывать, а статус нужен только для того, чтобы отображать его в строке состояния.
И зачем я буду реализовывать весь http самостоятельно?
Записан
voral
Гость
« Ответ #10 : Декабрь 08, 2010, 11:27 »

Вот представь, мне нужно по http грузить данные и показывать, а статус нужен только для того, чтобы отображать его в строке состояния.
И зачем я буду реализовывать весь http самостоятельно?
Так и не надо. Может у меня ассистент другой Подмигивающий но:
Цитировать
QNetworkReply * QNetworkAccessManager::get ( const QNetworkRequest & request )
В свою очередь QNetworkReply имеет сигналы:
Цитировать
void   downloadProgress ( qint64 bytesReceived, qint64 bytesTotal )
void   error ( QNetworkReply::NetworkError code )
void   uploadProgress ( qint64 bytesSent, qint64 bytesTotal )
Из описалова:
Цитировать
This signal is suitable to connecting to QProgressBar::setValue() to update the QProgressBar that provides user feedback.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.047 секунд. Запросов: 21.