Показать сообщение отдельно

  #2  
Старый 04.02.2010, 16:57
RedFern.89
Постоянный
Регистрация: 20.01.2010
Сообщений: 338
Провел на форуме:
500264

Репутация: 69
Отправить сообщение для RedFern.89 с помощью ICQ
По умолчанию

вот тебе пример функции из моего модуля. Думаю разберешься, там все еть.

Код:
function TApiGetHTTP.Get(const AURL: string; AResponseContent: TStream): boolean;
const BufferSize = 1024;
var
  Buffer : array[0..BufferSize] of Byte;
  BufferLen: DWORD;
  Header : string;
  hSession, hConnect, hRequest : hInternet;
  FSize : Int64;
begin
{ Подготавливаем заголовок }
  If FUserAgent = '' Then FUserAgent := 'Delphi/7.0';
  If FAccept <> '' Then Header := Header + 'Accept: ' + FAccept + #10;
  If FAcceptEncoding <> '' Then Header := Header + 'Accept-Encoding: ' + FAcceptEncoding + #10;
  If FConnection <> '' Then Header := Header + 'Connection: ' + FConnection + #10;
  If FContentType <> '' Then Header := Header + 'Content-Type: ' + FContentType + #10;
  If FKeepAlive <> '' Then Header := Header + 'Keep-Alive: ' + FKeepAlive + #10;
  If FAcceptCharset <> '' Then Header := Header + 'Accept-Charset: ' + FAcceptCharset + #10;

  If (FRangeStart <> '') and (FRangeEnd <> '') Then
  begin
    Header := Header + 'Range: bytes=' + FRangeStart + '-' + FRangeEnd;
  end;

  // Если есть куки, то приделываем их к заголовку
  If FCookie <> '' Then Header := Header + 'Cookie: ' + FCookie;

 hSession := InternetOpen(PChar(FUserAgent), INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
 hConnect := InternetConnect(hSession, pchar(GetHost(AURL)), 80, nil, nil,
                             INTERNET_SERVICE_HTTP, 0, 0);

 hRequest := HttpOpenRequest(hConnect, PChar('GET'), PChar(Copy(AURL, Pos('.ru', AURL) +4, Length(AURL))), 'HTTP/1.1',
                             nil, nil, 0, 0);

 HttpSendRequest(hRequest, PChar(Header), Length(Header), nil,
                 0);

  FSize := GetUrlInfo(HTTP_QUERY_CONTENT_LENGTH, AURL);
  TriggerOnWorkBegin(FSize);

 repeat
  Result := InternetReadFile(hRequest, @Buffer,
  SizeOf(Buffer), BufferLen); 
  AResponseContent.Write(Buffer, SizeOf(Buffer));
  TriggerOnWork(AResponseContent.Position);
 until BufferLen = 0;
  InternetCloseHandle(hRequest);
  InternetCloseHandle(hSession);
  TriggerOnWorkEnd(nil);
end;