0
kupava
30.04.15
✎
13:20
|
Понадобилоь моему клиенту програмно обрабатывать страницу закрытого портала.
Это рабочий пример решения одной задачи.
Может быть кому то пригодится...
Сервер = "dealers.ligazakon.ua";
Ресурс1 = "/DEALERS%5CL_dealers2.nsf/vAllTehnoPageWeb1/GroupOrder"; // именно та страница, которую нужно получить и обработать программно.
// Это диллерский портал, поэтому закрыт авторизацией
Пользователь = "12589887UT"; // как пример
Пароль = "jESf_042015"; // как пример
Если ПустаяСтрока(Сервер) + ПустаяСтрока(Пользователь) + ПустаяСтрока(Пароль) > 0 Тогда
Сообщить("Не заданы параметры соединения с сайтом!");
Возврат;
КонецЕсли;
// Здесь все просто
WinHttp = Новый COMОбъект("WinHttp.WinHttpRequest.5.1");
WinHttp.Option(2,"Windows-1251");
// Кроме того портал использует такого сертификата.
Скрипт = Новый COMОбъект("MSScriptControl.ScriptControl");
Скрипт.language="javascript";
Скрипт.AddObject("WinHttp",WinHttp);
Скрипт.Eval("WinHttp.Option(2)=1251");
Скрипт.Eval("WinHttp.Option(4)=13056");//intSslErrorIgnoreFlags
Скрипт.Eval("WinHttp.Option(6)=true");//blnEnableRedirects
Скрипт.Eval("WinHttp.Option(12)=true");//blnEnableHttpsToHttpRedirects
Попытка
WinHttp.Open("GET","; + Сервер + Ресурс1, 0);
Кодировка = "base64";
// После подключения к серверу необходимо авторизоваться
// таким способом. Закодировать результат сложения строк(пароль и логин) с помощью base64
// и передать их в заголовки.
ЛогинПароль = Кодировать(Пользователь+":"+Пароль,Кодировка);
WinHttp.SetRequestHeader("Authorization"," Basic "+Строка(ЛогинПароль));
WinHttp.Send();
Исключение
Сообщить(ОписаниеОшибки());
Возврат;
КонецПопытки;
ВременныйФайл = "D:/GroupOrder.html";
ФайлTXT = Новый ТекстовыйДокумент;
ФайлTXT.УстановитьТекст(WinHttp.ResponseText());
ФайлTXT.Записать(ВременныйФайл);
Надеюсь кому-нибудь поможет.
|
|
1
kupava
30.04.15
✎
13:22
|
Функция Кодировать(Стр, Кодировка)
ЦДО=Новый COMОбъект("CDO.Message");
БодиПарт=ЦДО.BodyPart;
Поля=БодиПарт.Fields;
Поле=Поля.Item("urn:schemas:mailheader:content-type");
Поле.Value="text/plain; charset=""windows-1251""";
Поля.Update();
Стрим = БодиПарт.GetDecodedContentStream();
Стрим.charset = "windows-1251";
Стрим.WriteText(Стр);
Стрим.Flush();
БодиПарт.ContentTransferEncoding = Кодировка;
Стрим=БодиПарт.GetEncodedContentStream();
Возврат Стрим.ReadText();
КонецФункции // Кодировать64(Стр)
|
|