Delphi 7 - источник веб-страницы (gzipped) - WebBrowser
Как поместить исходный код сайта в memo1, когда он сжат с помощью gzip.
Я уже использовал этот метод для получения источника:
function GetWebBrowserHTML(const WebBrowser: TWebBrowser): String;
var
LStream: TStringStream;
Stream : IStream;
LPersistStreamInit : IPersistStreamInit;
begin
if not Assigned(WebBrowser.Document) then exit;
LStream := TStringStream.Create('');
try
LPersistStreamInit := WebBrowser.Document as IPersistStreamInit;
Stream := TStreamAdapter.Create(LStream,soReference);
LPersistStreamInit.Save(Stream,true);
result := LStream.DataString;
finally
LStream.Free();
end;
end;
Но когда я пытаюсь использовать этот метод на сжатом сайте, я получаю пустой результат или несколько случайных символов.
2 ответа
HTML-код распаковывается при загрузке с сервера, прежде чем его можно будет отобразить пользователю. Таким образом, интерфейсы DOM никогда не вернут вам сжатый HTML, так что вам не нужно об этом беспокоиться. Код, который вы показали, будет работать нормально.
Во-первых, большое спасибо Реми Лебо за вашу помощь, ваши предложения действительно помогли мне решить проблему.
Таким образом, я не смог найти причину, по которой приведенный выше код не работает для меня на одной странице, но я нашел альтернативу, которая работает.
uses MSHTML
procedure TForm1.Button1Click(Sender: TObject);
begin
Memo1.Text:=(WebBrowser1.Document AS IHTMLDocument2).body.innerHTML;
end;
Я не знаю, какие ограничения имеют вышеуказанное решение, но до сих пор работает нормально.