Модераторы: Snowy, Poseidon, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Раскодировать Http запрос сжатый GZIP, Не получается 
:(
    Опции темы
Kashmir
Дата 21.8.2006, 19:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 21.8.2006

Репутация: нет
Всего: нет



Делаю клиент для веб-чата. Посылаю Post-запрос авторизации, получаю ответ, что авторизирован, файл найдет и в теле фигня закодированная GZIP`ом.  

Делаю декомпрессию функцией взятой с www.vkarlsen.no/lvk/current/LVK_Full.zip, и функция декомпрессии выдает ошибку чтения. Что за хрень???

Вот ответ на пост запрос:
Код

HTTP/1.1 302 Found
Date: Mon, 21 Aug 2006 16:52:35 GMT
Server: Apache/2.2.2 (Unix) mod_fastcgi/2.4.2 PHP/5.1.4-310
X-Powered-By: PHP/5.1.4-310
Set-Cookie: Test=Enabled; expires=Tue, 22-Aug-2006 02:52:35 GMT
Set-Cookie: PHPSESSID=8f9a538e1e16caeebae30980c112c881; 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
Location: Community.php
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 5697
Connection: close
Content-Type: text/html; charset=windows-1251



Вот код:

Код

procedure TFormMain.SyncAuthorization;
var
   request, URL, content,
   Header,  Body: string;
   ChatUser: TUser;
begin
        TcpClient1.RemoteHost:='psychology.net.ru';
        TcpClient1.RemotePort:='80';
        url:='/comcom/index.php';
        content:='Login=login&Password=password&Room=1&Sex=%CC&Enter=+%C2%EE%E9%F2%E8+%E2+%F7%E0%F2+';
        Vars :=
        'Host: psychology.net.ru'+CRLF+
        'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.0.6) Gecko/20060728 Firefox/1.5.0.6'+CRLF+
        'Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5'+CRLF+
        'Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3'+CRLF+
        'Accept-Encoding: gzip,deflate'+CRLF+
        'Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7'+CRLF+
        'Keep-Alive: 300'+CRLF+
        'Connection: keep-alive'+CRLF+
        'Referer: http://psychology.net.ru/comcom/'+CRLF+
        //'Cookie: Test=Enabled; phpbb2mysql_data=a%3A7D; PHPSESSID=14fac046911'+CRLF+
        'Content-Type: application/x-www-form-urlencoded'+CRLF;
        request:='POST '+URL+' HTTP/1.0'+CRLF;
        request:=request+ vars +
        'Content-Length: '+inttostr(length(content))+CRLF;
        try
              TcpClient1.Open;
              ProgressBar1.Position := 35;
              TcpClient1.Sendln(request+CRLF+content,'');
              ProgressBar1.Position := 50;
              Header:=TcpClient1.Receiveln(CRLF+CRLF);
              Body:=TcpClient1.Receiveln('');
              Memo1.Lines.Add(Header + CR + Body + '#13');
              Memo1.Lines.Add('Community.php');
              ShowMessage('Размер загруженных данных: '+IntToStr(inStream.Size div 1024)+' кб.');
              try
                Body := gZipDecompress(Body);
              except
              end;
              isEntered2Chat := true;
        except
              isEntered2Chat := false;
        end;
        TcpClient1.Close;
        ChangeHeaders;
end;


 smile  smile  smile 
PM MAIL   Вверх
Romikgy
Дата 21.8.2006, 20:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 3
Всего: 146



Цитата(Kashmir @  21.8.2006,  18:57 Найти цитируемый пост)
gZipDecompress(Body);

а енто где ?


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Kashmir
Дата 21.8.2006, 21:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 21.8.2006

Репутация: нет
Всего: нет



строка 38 
PM MAIL   Вверх
Romikgy
Дата 21.8.2006, 23:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 3
Всего: 146



Kashmir, тогда ошибка в 17


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Kashmir
Дата 22.8.2006, 00:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 21.8.2006

Репутация: нет
Всего: нет



Почему ошибка?
PM MAIL   Вверх
Romikgy
Дата 22.8.2006, 09:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 3
Всего: 146



у дебагера спроси


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
ASGDeveloper
Дата 22.8.2006, 11:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


developer
**


Профиль
Группа: Участник
Сообщений: 389
Регистрация: 1.4.2006

Репутация: нет
Всего: 1



Цитата(Kashmir @  22.8.2006,  00:34 Найти цитируемый пост)
Почему ошибка? 

Мы не видели кода декомпрессора. Покажи его тоже.

ЗЫ "Ошибка в строке 17" - это такое выражение, которое говорят когда кто-то просит помощи, но не кажет исходы.  smile 
PM MAIL   Вверх
Romikgy
Дата 22.8.2006, 12:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 3
Всего: 146





--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Kashmir
Дата 25.8.2006, 18:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 21.8.2006

Репутация: нет
Всего: нет



Код процедуры, в которой ошибка:

Код

procedure gZipDecompress(const SourceStream, DestinationStream: TStream;
  const BufferSize: Cardinal);
var
  Header        : TGZipHeader;
  SourceBuffer  : TStream;

  procedure SkipExtra;
  var
    XLEN  : UInt16;
  begin
    SourceBuffer.ReadBuffer(XLEN, SizeOf(XLEN));
    SourceBuffer.Position := SourceStream.Position + XLEN;
  end;

  procedure SkipASCIIZ;
  var
    b : UInt8;
  begin
    repeat
      SourceBuffer.ReadBuffer(b, 1);
    until b = 0;
  end;

  procedure SkipCRC16;
  var
    CRC16 : UInt16;
  begin
    SourceBuffer.ReadBuffer(CRC16, SizeOf(CRC16));
  end;

begin
  Assert(Assigned(SourceStream));
  Assert(Assigned(DestinationStream));

  SourceBuffer := TlvkBufferedStream.Create(SourceStream, False);
  try
    SourceBuffer.Position := 0;
    SourceBuffer.ReadBuffer(Header, SizeOf(Header));
    Assert(Header.ID1_2 = GZIP_SIGNATURE);
    Assert(Header.CM = GZIP_DEFLATED);
    if (Header.FLG and GZIP_FLAG_FEXTRA) <> 0 then
      SkipExtra;
    if (Header.FLG and GZIP_FLAG_FNAME) <> 0 then
      SkipASCIIZ;
    if (Header.FLG and GZIP_FLAG_FCOMMENT) <> 0 then
      SkipASCIIZ;
    if (Header.FLG and GZIP_FLAG_FHCRC) <> 0 then
      SkipCRC16;

    DecompressStream(SourceBuffer, DestinationStream, BufferSize, False);
  finally
    SourceBuffer.Free;
  end;
end;


Добавлено @ 18:27 
Ошибка в строке 48.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0513 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.