Russian Qt Forum

Qt => Работа с сетью => Тема начата: Mike от Март 01, 2010, 10:34



Название: ProtocolFailure при загрузке больших файлов
Отправлено: Mike от Март 01, 2010, 10:34
Загружаю периодически файлы через QNetworkAccessManager. Если файл небольшой, ну порядка 1мб, все работает, загружается. А если чуть побольше, например, при 1.5мб, QNetworkReply выдает ошибку QNetworkReply::ProtocolFailure.

Запрос отправляю так:
Код:
QNetworkRequest request;
request.setUrl(url);

QNetworkReply* reply = mNetManager->get(request);
connect(reply, SIGNAL(downloadProgress(qint64, qint64)),
this, SIGNAL(progress(qint64, qint64)));

С чем может быть связано появление этой ошибки для файлов, которые чуть побольше?


Название: Re: ProtocolFailure при загрузке больших файлов
Отправлено: ecspertiza от Март 01, 2010, 10:39
А ты файлы загружаешь по какому протоколу http, ftp или еше что? У  QNetworkAccessManager проблем с закачкой больших файлов вроде нету, может на сервере стоит ограничение?


Название: Re: ProtocolFailure при загрузке больших файлов
Отправлено: Mike от Март 01, 2010, 10:40
http
А на счет ограничений на сервере, это сейчас у админа узнаю


Название: Re: ProtocolFailure при загрузке больших файлов
Отправлено: ecspertiza от Март 01, 2010, 10:51
Вот http://ru.wikipedia.org/wiki/HTTP почитай про Http, я когда организовывал закачку по этому протоколу обычно сначала получал заголовки, потом проверял что ответил сервер, и только потом начинал закачку. В заголовках он тебе вернет и размер файла и еше кучу всякой беды.


Название: Re: ProtocolFailure при загрузке больших файлов
Отправлено: Mike от Март 01, 2010, 11:10
Решил проблему:
Данные у меня с сервака передавались пожатые qzip-ом. Поэтому добавил в запрос заголовок:
Код:
request.setRawHeader("Accept-Encoding", "gzip,deflate");

Правда не понятно, почему для маленьких файлов загрузка работала и без этого заголовка