Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

idHTTP1 и закачка стр. из ЯНДЕКС.ру

36K
25 декабря 2011 года
Pcrepair
64 / / 16.01.2011
Добрый день
Есть компонент idHTTP1, с помощью которого можно закачать код ХТМЛ-страницы, указав УРЛ страницы. В общем все работает (кроме фреймов, сайтов с редиректом, и есть проблемы со шрифтами)
НО, если задать адрес Ya.ru, выскакивает 301 ошибка и страница сервиса не загружается.
Вопрос для знатоков ИНДИ 10 (РАД2010):
1. если предварительно отослать запрос (через POST ввести словосочетание для поиска, ну скажем "купить телевизор") в строку ввода поиска на Яндексе, получится ли закачать первую страницу ответа Яндекса? Или всетаки нужно это делать через ТВебБраузер?
2. что то страницы с отдельных сайтов закакчиваются с кракозябрами, или вообще тексты с кириллицей не закачиваются, закачиваются только то что написано латиницей. С этим что то сделать можно? Если можно, то как?
Всем ответившим по делу спасибо.
277
25 декабря 2011 года
arrjj
1.7K / / 26.01.2011
301 редирект, читаем Location и переходим туда.
36K
25 декабря 2011 года
Pcrepair
64 / / 16.01.2011
Цитата: arrjj
читаем Location и переходим туда.


Location - это где? ни в свойствах, ни в событиях idHTTP1 ничего похожего что то не нашел

14
25 декабря 2011 года
Phodopus
3.3K / / 19.06.2008
это http-header
по поводу 2 - можно попробовать добавить хедеры в GET запрос: Accept-Language, Accept-Encoding
не помню, есть ли они как свойства у IdHttp или нет
36K
25 декабря 2011 года
Pcrepair
64 / / 16.01.2011
с редиректом 301 получилось проще
ОТВЕТ: св-во HandleRedirects компонента idhttp в true
после этого сообщений об ошибке пока нет, в том числе и на яндексе
36K
27 декабря 2011 года
Pcrepair
64 / / 16.01.2011
Решение задачи следующее:
Использование TStringStream для решения проблем с кодировкой
Код:
Код:
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;

Результаты: код страницы в ПЕРЕМ типа TStringStream закачивается нормально, но может имееть две(или больше) разновидностей кодировки
1. если кодировка charset=windows-1251, то нужно использовать вариант1
2. если кодировка charset=UTF-8, то вариант1 (Utf8ToAnsi или UTF8Decode)
3. для универсальности нужен дополнительный код: вначале читать в ХТМЛ коде тип кодировки и делать выбор с применением доп. обработки
Если кому не лень, модифицируйте код в стиле обработки исключений, но без вывода сообщений
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог