Russian Qt Forum

Qt => Работа с сетью => Тема начата: Straylon от Декабрь 02, 2009, 17:38



Название: Проблема с получением параметров заголовка ответов QHttpResponseHeader
Отправлено: Straylon от Декабрь 02, 2009, 17:38
Здравствуйте! Есть следующая проблемка:
Создаю подключение http (http = new QHttp(this);).
Передаю запрос:
QHttpRequestHeader header ("GET", "/enc/nauka_i_tehnika/fizika/ABSOLYUTNI_NUL.html");
header.setValue("Host", "www.krugosvet.ru");
http->setHost("www.krugosvet.ru");
http->request(header);
По сигналу  connect(http, SIGNAL(responseHeaderReceived(const QHttpResponseHeader &)),
   this, SLOT(readResponseHeader(const QHttpResponseHeader &)));
пытаюсь получить параметры ответа в методе readResponseHeader (размер файла ABSOLYUTNI_NUL.html):
int fileSize = header.value("content-length").toInt();
но fileSize всегда равно нулю. В чем проблема? Как же получить размер этого файла?


Название: Re: Проблема с получением параметров заголовка ответов QHttpResponseHeader
Отправлено: DOOMer от Декабрь 03, 2009, 10:33
Сервер не отдаёт HTTP-заголовок   Content-Length, амне удалось получить только такие заголовки:

HTTP/1.1 200 OK
Server: nginx/0.6.14
Date: Thu, 03 Dec 2009 07:26:28 GMT
Content-Type: text/html; charset=windows-1251
Transfer-Encoding: chunked
Connection: keep-alive
X-Powered-By: PHP/5.2.10
Set-Cookie: PHPSESSID=31c616400c84273bfd41b5bb92a63102; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache


Название: Re: Проблема с получением параметров заголовка ответов QHttpResponseHeader
Отправлено: Straylon от Декабрь 03, 2009, 11:07
Хм, точно. А как же тогда получить размер удаленного файла в таком случае?


Название: Re: Проблема с получением параметров заголовка ответов QHttpResponseHeader
Отправлено: DOOMer от Декабрь 03, 2009, 12:13
Обязательно узнать размер файла, не загружая его при этом с сервера?

 Если нет, то просто считывай его  в строковой тип через слот, вызываемый по сигналу readyRead()  используемого  тобой   QHttp-объекта. А потом уже просто узнавай размер через метод  .length() объекта, в который сохранил данные.


Название: Re: Проблема с получением параметров заголовка ответов QHttpResponseHeader
Отправлено: Straylon от Декабрь 03, 2009, 12:18
В том-то и проблема, что надо не загружая сам файл, узнать его размер. Это необходимо для функции обновления. В примере, конечно, страничка маленькая, а если документ 50 Мб, то смысл его закачивать и обновлять инфу о нем, если он такой же остался, как был. Вот сижу думаю, как выйти из ситуации  ???


Название: Re: Проблема с получением параметров заголовка ответов QHttpResponseHeader
Отправлено: Straylon от Декабрь 03, 2009, 12:20
Получить дату последнего измения от сервера я так понимаю тоже не всегда есть возможность...


Название: Re: Проблема с получением параметров заголовка ответов QHttpResponseHeader
Отправлено: Straylon от Декабрь 03, 2009, 12:31
DooMer, а как бы ты решил задачу обновления информации об удаленном документе в случае его изменения? Как видишь размер и дата последнего изменения без загрузки не прокатывают?


Название: Re: Проблема с получением параметров заголовка ответов QHttpResponseHeader
Отправлено: DOOMer от Декабрь 03, 2009, 13:05
Straylon , я бы "пнул" разработчиков ресурса, с которого надо получать инфу, чтобы у них правильно генерировались  HTTP-заголовки. Ведь  Content-Lenght и  Last-Modifed для этого и предназначены.

Больше никак я думаю.


Название: Re: Проблема с получением параметров заголовка ответов QHttpResponseHeader
Отправлено: Straylon от Декабрь 03, 2009, 13:08
Да понимаешь пихнуть надо разработчиков порядка 300 ресурсов ;D, хотя надо проверить, может тока с этим ресурсом проблема