FoxBase!
msgbartop
Блог Oracle разработчика
msgbarbottom
foxbase

10.10.2010 Indy TIdHTTP.GET и русские символы в HTML

Indy GET
Решив проблемы с кодировкой передаваемых символов в методе TIdHTTP.POST и получаемом в ответ HTML тексте мы забыли упомянуть про метод TIdHTTP.GET, который иногда испытывает подобные проблемы с HTML текстом. Впрочем, решение проблемы состоит также в использовании потоков. Ниже приведен текст функции GET, которая использует технологию, описанную в предыдущих статьях.

function THTTP1.HTTP_Get(URL: string): string;
  var RStream: TStream;
      Strings: TStringList;
begin
  Result:='';
  WriteCookies(url);
  RStream := TMemoryStream.Create;
  if FCodePage=CP_UTF8 then Result:=http.Get(URL) else
  begin
    Strings:=TStringList.Create;;
    try
      http.Get(URL,RStream);
      RStream.Position := 0;
      strings.LoadFromStream(RStream);
      Result:=Strings.Text;
    finally
      Strings.Free;
      RStream.Free;
    end;
  end;
  ReadCookies(URL);
end;
Заметьте, что анализируется значение переменной FCodePage (которая выставляется заранее самостоятельно или вычисляется автоматически на основании HTML кода при самом первом запросе к сайту) и если кодировка UTF8, то GET выполняется обычным образом, для UTF8 в Delphi2009-2010 проблем с кодировкой в Indy TIdHTTP нет.  
В этой функции используются процедуры WriteCookies и ReadCookies, которые описаны в статье "Indy Cookie Manager своими руками". 

www.foxbase.ru


Смотрите также:



Оставьте свой комментарий

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