![]() |
![]() |
![]() |
|
1C 8.2 и WinHttp (https, сертификат) | ☑ | ||
---|---|---|---|---|
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","https://" + Сервер + Ресурс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(Стр) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |