Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
28 / 27 / 7
Регистрация: 11.06.2011
Сообщений: 364
1

Не могу составить заголовок http для zlib

27.12.2013, 17:42. Просмотров 1751. Ответов 7
Метки нет (Все метки)


Пишу, что-то вроде http-сервера. Хочу чтобы он слал упакованные тела.

В QByteArray result есть некий текст, упакованный qCompress

составляю html заголовки.
C++ (Qt)
1
2
3
4
5
6
            HTMLHead+="HTTP/1.1 200 OK\r\n";
            HTMLHead+="Content-Length: "+QString::number(result.size())+"\r\n";
            HTMLHead+="Content-Type: text/html\r\n";
            HTMLHead+="Content-Encoding: deflate\r\n";
            HTMLHead+="\r\n";
            result=HTMLHead+result;
И пытался сделать так
C++ (Qt)
1
2
3
4
5
6
7
8
            HTMLHead+="Transfer-Encoding: chunked\r\n";
            HTMLHead+="Content-Type: text/html\r\n";
            HTMLHead+="Content-Encoding: deflate\r\n\r\n";
            HTMLHead+=QString::number(result.size(),16)+"\r\n";
            HTMLHead+=result;
            HTMLHead+="0\r\n";
            HTMLHead+="\r\n";
            result=HTMLHead;
result потом шлю в тот же сокет от куда пришел запрос.

При попытке получить данные через curl, получаю сообщение: "curl: (61) Error while processing content unencoding: invalid stored block lengths"

В браузере выводится упакованный вид. Т.е. что-то получает, но либо не дополучает, либо не может распаковать.


Что не так в составленных заголовках ?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.12.2013, 17:42
Ответы с готовыми решениями:

Http заголовок для прокси сервера
Разрабатываю программу, которая формирует http запрос, коннектится на сервер и получает ответ. Что...

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

Не могу понять работу zlib
Вот такой код: s = "тест" s = bytes(s, "utf8") print("Символов до сжатия:", len(s)) result =...

Http заголовок
Пытаюсь автоматизировать процесс загрузки на Rghost.ru но не могу найти поле с названием...

7
Ушел с форума
Эксперт С++
16414 / 7389 / 1185
Регистрация: 02.05.2013
Сообщений: 11,637
Записей в блоге: 1
27.12.2013, 18:11 2
Цитата Сообщение от admsasha Посмотреть сообщение
В QByteArray result есть некий текст, упакованный qCompress
А Вы уверены, что используется именно тот метод сжатия, который нужен ?
deflate (или x-deflate) - это сжатие алгоритмом zlib. Есть еще gzip и "сырой" deflate,
разница между этими тремя алгоритмами только в заголовках и контрольной сумме.
Но браузер может отвергнуть ответ, если в заголовках одно, а в теле - другое.

Цитата Сообщение от admsasha Посмотреть сообщение
Что не так в составленных заголовках ?
Не может быть и "Content-Length" и"chunked".
Выбирайте что-то одно. Про то, как следует передавать chunked, надеюсь, Вы знаете
(там маркер длины перед каждой порцией сообщения, и еще один нулевой в конце).
0
28 / 27 / 7
Регистрация: 11.06.2011
Сообщений: 364
27.12.2013, 18:28  [ТС] 3
Пишут, что Qt использует именно zlib для этого. Впрочем попробовал и в заголовок указать gzip, результат тот же.


Цитата Сообщение от Убежденный Посмотреть сообщение
Не может быть и "Content-Length" и"chunked".
Так я привел ДВА разных примера. Нету там одновременно того и того.
0
Ушел с форума
Эксперт С++
16414 / 7389 / 1185
Регистрация: 02.05.2013
Сообщений: 11,637
Записей в блоге: 1
27.12.2013, 18:38 4
Цитата Сообщение от admsasha Посмотреть сообщение
Пишут, что Qt использует именно zlib для этого.
Где пишут ?
0
Эксперт С++
8354 / 6101 / 610
Регистрация: 10.12.2010
Сообщений: 28,390
Записей в блоге: 29
28.12.2013, 02:41 5
Цитата Сообщение от Убежденный Посмотреть сообщение
Где пишут ?
А хз где ... судя по ошибке ТС вообще curl использует, при чем тут Qt непонятно.

Блог: Библиотека libcurl : 12. Получение страниц в сжатом виде.
0
28 / 27 / 7
Регистрация: 11.06.2011
Сообщений: 364
29.12.2013, 04:50  [ТС] 6
Qt используется для отдачи данных (Сервер), curl используется для получения данных (клиент). Причем обычный консольный curl, а не своя программа.

Добавлено через 22 часа 38 минут
Цитата Сообщение от Убежденный Посмотреть сообщение
Где пишут ?
Я не правильно понял документацию ?
The compressionLevel parameter specifies how much compression should be used. Valid values are between 0 and 9, with 9 corresponding to the greatest compression (i.e. smaller compressed data) at the cost of using a slower algorithm. Smaller values (8, 7, ..., 1) provide successively less compression at slightly faster speeds. The value 0 corresponds to no compression at all. The default value is -1, which specifies zlib's default compression.
0
Ушел с форума
Эксперт С++
16414 / 7389 / 1185
Регистрация: 02.05.2013
Сообщений: 11,637
Записей в блоге: 1
29.12.2013, 13:09 7
Дело в том, что zlib умеет работать с разными алгоритмами компрессии, и я не уверен,
что здесь, в документации, подразумевается именно тот zlib, который описан в RFC 1950 и
который ожидается браузером при получении заголовка "Content-Encoding: deflate".

Можете сохранить в файл весь ответ сервера (заголовки + сжатое тело) и выложить сюда ?
0
1440 / 1321 / 131
Регистрация: 20.03.2009
Сообщений: 4,689
Записей в блоге: 11
29.12.2013, 13:15 8
admsasha, приведи весь код, начиная от сжатия и заканчивая записью в сокет.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.12.2013, 13:15

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

HTTP заголовок
Есть HTTP заголовок HTTP/1.1 200 OK Server: nginx Date: Tue, 18 Sep 2012 18:56:08 GMT...

Задать HTTP заголовок X Robots
Добрый день, друзья. Расскажите, пожалуйста, как добавить для страниц с параметром "page_id",...

Заголовок http запроса по synapse
Здравствуйте! Как получить заголовок http запроса, как в хроме например: GET /yii2/web/prest...

Нормальный заголовок http запроса
Нужно сделать заголовок, чтобы, в моем случае википедия, принимала запросы от программы. Пока у...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.