var
mStream: TStringStream;
URL : string;
begin
mStream := TStringStream.Create;
URL := Edit1.Text;
idHttp1 := TIdHTTP.Create(nil);
idHttp1.Get(URL, mStream);
Memo1.Clear;
Memo1.Text := mStream.DataString; // вариант1, кодировка charset=windows-1251
//или
Memo1.Text := UTF8Decode (mStream.DataString); // вариант2, кодировка charset=UTF-8
end;
idHTTP1 и закачка стр. из ЯНДЕКС.ру
Есть компонент idHTTP1, с помощью которого можно закачать код ХТМЛ-страницы, указав УРЛ страницы. В общем все работает (кроме фреймов, сайтов с редиректом, и есть проблемы со шрифтами)
НО, если задать адрес Ya.ru, выскакивает 301 ошибка и страница сервиса не загружается.
Вопрос для знатоков ИНДИ 10 (РАД2010):
1. если предварительно отослать запрос (через POST ввести словосочетание для поиска, ну скажем "купить телевизор") в строку ввода поиска на Яндексе, получится ли закачать первую страницу ответа Яндекса? Или всетаки нужно это делать через ТВебБраузер?
2. что то страницы с отдельных сайтов закакчиваются с кракозябрами, или вообще тексты с кириллицей не закачиваются, закачиваются только то что написано латиницей. С этим что то сделать можно? Если можно, то как?
Всем ответившим по делу спасибо.
301 редирект, читаем Location и переходим туда.
Цитата: arrjj
читаем Location и переходим туда.
Location - это где? ни в свойствах, ни в событиях idHTTP1 ничего похожего что то не нашел
по поводу 2 - можно попробовать добавить хедеры в GET запрос: Accept-Language, Accept-Encoding
не помню, есть ли они как свойства у IdHttp или нет
ОТВЕТ: св-во HandleRedirects компонента idhttp в true
после этого сообщений об ошибке пока нет, в том числе и на яндексе
Использование TStringStream для решения проблем с кодировкой
Код:
Код:
Результаты: код страницы в ПЕРЕМ типа TStringStream закачивается нормально, но может имееть две(или больше) разновидностей кодировки
1. если кодировка charset=windows-1251, то нужно использовать вариант1
2. если кодировка charset=UTF-8, то вариант1 (Utf8ToAnsi или UTF8Decode)
3. для универсальности нужен дополнительный код: вначале читать в ХТМЛ коде тип кодировки и делать выбор с применением доп. обработки
Если кому не лень, модифицируйте код в стиле обработки исключений, но без вывода сообщений