0
AndreyV777
25.01.11
✎
14:59
|
WinHttp = СоздатьОбъект("WinHttp.WinHttpRequest.5.1");
WinHttp.Option(2,"utf-8");
WinHttp.SetRequestHeader("Accept-Language", "ru");
WinHttp.SetRequestHeader("Accept-Charset","utf8");
WinHttp.setRequestHeader("Content-Language", "ru");
WinHttp.setRequestHeader("Content-Charset", "utf8");
WinHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=utf8");
Res = WinHttp.Send(PostData);
Возврат WinHttp.ResponseText();
Страница в utf-8 кодировке, но WinHttp.ResponseText() всеравно возвращает кракозябры... Вопрос, что делать?
|
|
5
smaharbA
26.01.11
✎
16:12
|
Далее сам
Функция ПреобразованиеБинаровВТекст(Объект) Скрипт=СоздатьОбъект("MSScriptControl.ScriptControl"); Скрипт.language="javascript"; РекордСет=СоздатьОбъект("ADODB.Recordset"); Объект.position=0; Скрипт.AddObject("Объект",Объект); Поля=РекордСет.Fields; Поля.Append("txt", 200, Объект.Size, 128); РекордСет.Open(); РекордСет.AddNew(); Скрипт.AddObject("Поле",Поля.Item("txt")); Скрипт.Eval("Поле.AppendChunk(Объект.Read)"); Стр=РекордСет.Fields("txt").Value; РекордСет.Close(); РекордСет=0; Возврат Стр; КонецФункции //******************************************* Процедура Сформировать() Перем Кодировка,Прокси,Пользователь,Пароль; Скрипт=СоздатьОбъект("MSScriptControl.ScriptControl"); Скрипт.language="javascript"; Это=Скрипт.Eval("this"); Пользователь="ПользовательПроксиЕслиНадо"; Пароль="ПарольПользователяПроксиЕслиНадо"; Прокси="192.168.1.250:3128"; Агент="Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.2; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)"; ТаймАут=3000; Слово="пример запроса"; НомерСтраницы=0; КоличествоРезультатов=50; ХТТПЗапрос = СоздатьОбъект("WinHttp.WinHttpRequest.5.1"); Скрипт.AddObject("ХТТПЗапрос",ХТТПЗапрос); Если ПустоеЗначение(Прокси)=0 Тогда ХТТПЗапрос.SetProxy(2,Прокси); КонецЕсли; ХТТПЗапрос.SetTimeouts(ТаймАут,ТаймАут,ТаймАут,ТаймАут); УРЛ=Шаблон("http://yandex.ru/yandsearch?text=[Слово]&p=[НомерСтраницы]&numdoc=[КоличествоРезультатов]"); ХТТПЗапрос.Open("GET", УРЛ, 0); Если ПустоеЗначение(Пользователь)=0 Тогда ХТТПЗапрос.SetCredentials(Пользователь,Пароль,1); КонецЕсли; Скрипт.Eval("ХТТПЗапрос.Option(0)='"+Агент+"'"); ХТТПЗапрос.SetRequestHeader("Accept-Language", "ru"); ХТТПЗапрос.SetRequestHeader("Accept-Charset", "Windows-1251"); ХТТПЗапрос.setRequestHeader("Content-Language", "ru"); ХТТПЗапрос.setRequestHeader("Content-Charset", "Windows-1251"); ХТТПЗапрос.SetRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=Windows-1251"); ХТТПЗапрос.setRequestHeader("User-Agent",Агент); ХТТПЗапрос.Send(); к=_GetPerformanceCounter(); Пока ХТТПЗапрос.Status<>200 Цикл Если _GetPerformanceCounter()-к>=ТаймАут Тогда Сообщить("Страница "+УРЛ+" неотвечает. Пипец!","!!!"); Возврат; КонецЕсли; Состояние("Ждем..."); КонецЦикла; Попытка Кодировка=ХТТПЗапрос.GetResponseHeader("Content-Type"); Кодировка=Нрег(СтрЗаменить(Кодировка," ","")); к=Найти(Кодировка,"charset="); Если к>0 Тогда Кодировка=Сред(Кодировка,к+8); КонецЕсли; Исключение КонецПопытки; Стрим = СоздатьОбъект("ADODB.Stream"); Стрим.Mode = 3; Стрим.Type = 1; Стрим.Open(); Скрипт.AddObject("Стрим",Стрим); Скрипт.Eval("Стрим.Write(ХТТПЗапрос.responseBody)"); Стр=ПреобразованиеБинаровВТекст(Стрим); Стрим.Close(); ХТМЛ = СоздатьОбъект("htmlfile"); ХТМЛ.Open("text/html"); ХТМЛ.write(Стр); Док=ХТМЛ.documentElement.document;
|
|