Обработка ответа сервера, сжатого в gzip

m4rt1n

Новичок
Обработка ответа сервера, сжатого в gzip

Существует некий скрипт, посылающий post-запрос серверу и получающий ответ. При этом, в заголовке запроса стоит "Accept-Encoding: gzip" для экономии трафика и времени, но есть существенная проблема - gzuncompress не хочет раскодировать сжатые данные. :) Каким образом следует распаковывать сжатые данные, кто что посоветует?
 

Wicked

Новичок
а теперь давай заново. У меня, например, есть сомнения, что проблема локализована и именно в gzuncompress. В браузере, хотя бы, эта страница нормально открывается? И расскажи, как именно ты делаешь gzuncompress... а то может ответ прямо с хедерами пытаешься разжать?
 

SiMM

Новичок
> а то может ответ прямо с хедерами пытаешься разжать?
и/или запрос делаешь в HTTP/1.1, на что получаешь Transfer-Encoding: chunked
 

m4rt1n

Новичок
>В браузере, хотя бы, эта страница нормально открывается?
да. вообще, следует сказать, что скрипт обращается к форуму IPB, так что тут все нормально.

>а то может ответ прямо с хедерами пытаешься разжать?
нет, это я проверял.

>и/или запрос делаешь в HTTP/1.1, на что получаешь Transfer-Encoding: chunked
гм, это имело место быть в моем коде, но при замене HTTP/1.1 на HTTP/1.0 "Transfer-Encoding: chunked" исчезло, а проблема - нет.
 

m4rt1n

Новичок
посылается запрос вида:

POST http://$url
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/msword, application/x-shockwave-flash, application/x-icq, */*
Accept-Encoding: gzip
Accept-Language: ru
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;)
Host: $site
Content-Length: ".strlen($data)."
Proxy-Connection: Keep-Alive
Pragma: no-cache

$data

где $data - post-данные. далее ответ сервера разъединяется на заголовок и непосредственно саму страницу. затем сжатая страница раскодируется с помощью gzuncompress($page_code), но при попытке раскодировки выводится предупреждение:
Warning: gzuncompress(): data error in c:\script.php on line 66.

насколько я знаю, при компрессии в gzip строка, полученная на выходе gzcompress(), несколько преобразуется, как, например, показано в http://phpclub.ru/faq/wakka.php?wakka=arch/archfaq/archfaq1&v=afq

вероятно поэтому gzuncompress не справляется с декодированием. я ранее не сталкивался с проблемой декодирования данных, полученных через HTTP, быть может, кто-то сталкивался с этим ранее?
 

Wicked

Новичок
1) Мне не нравится строка "POST http://$url" ... Где же HTTP/1.x ?
2) содержание $page_code то хоть похоже на gzipped строку?
 

m4rt1n

Новичок
гм, просто я здесь недописал)) на самом деле там:

POST http://$url HTTP/1.0
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/msword, application/x-shockwave-flash, application/x-icq, */*
Accept-Encoding: gzip
Accept-Language: ru
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1
Host: $site
Content-Length: ".strlen($data)."
Proxy-Connection: Keep-Alive
Pragma: no-cache

$data
 
Сверху