Решив проблемы с
кодировкой передаваемых символов в методе
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 нет.
Смотрите также:
Оставьте свой комментарий
Вы должны быть авторизированны, чтобы оставить комментарий.