Имя: Пароль:
1C
1С v8
1с Скачать WSDL описание WEB сервиса
0 sagitt
 
26.05.20
12:35
Есть WEB сервис, например:
https://3dsec.sberbank.ru/payment/webservices/merchant-ws?wsdl

Если открыть эту ссылку в браузере, то увидим описание, никаких паролей не надо.
Хочу прочитать это описание в файл с помощью 1С. пишу

ивф=ПолучитьИмяВременногоФайла("wsdl");
КопироватьФайл("https://3dsec.sberbank.ru/payment/webservices/merchant-ws?wsdl";, ивф);

получаю ошибку:

{ВнешнийОтчет.АнализXMLфайла.Форма.ФормаОтчета.Форма(1747)}: Ошибка при вызове метода контекста (КопироватьФайл)
КопироватьФайл("https://3dsec.sberbank.ru/payment/webservices/merchant-ws?wsdl";, ивф);
по причине:
Ошибка копирования файлов
по причине:
Ошибка доступа к файлу 'https://3dsec.sberbank.ru/payment/webservices/merchant-ws?wsdl'
по причине:
Ошибка работы с Интернет:  Удаленный узел не прошел проверку

Как сделать, чтобы ошибки не было?
1 Волшебник
 
модератор
26.05.20
12:38
HTTPS — это защищённое соединение
2 Волшебник
 
модератор
26.05.20
12:39
Используй объект HTTPСоединение с флагом HTTPСоединение.ЗащищенноеСоединение=Истина
3 DES
 
26.05.20
12:39
Как прочесть HTML страницу из 1С
Как прочесть HTML страницу из 1С
4 sagitt
 
26.05.20
12:46
К сожалению ссылка не открывается.
5 Волшебник
 
модератор
26.05.20
12:48
(4) Ничего у Вас не открывается...

Там нечего читать по Вашему вопросу.
forum.mista.ru/topic.php?id=751152
6 arsik
 
гуру
26.05.20
12:49
(0) Зачем так по варварски? Импортируй в 1С через ws-ссылки. Там вся структура будет.
https://i.imgur.com/QEhqU4U.png
7 sagitt
 
12.06.20
16:43
Большое спасибо за ответы. В итоге сделал так:

&НаКлиенте
Функция СтруктураURI(Знач СтрокаURI) Экспорт

    СтрокаURI = СокрЛП(СтрокаURI);
    
    // схема
    Схема = "";
    Позиция = Найти(СтрокаURI, "://");
    Если Позиция > 0 Тогда
        Схема = НРег(Лев(СтрокаURI, Позиция - 1));
        СтрокаURI = Сред(СтрокаURI, Позиция + 3);
    КонецЕсли;

    // строка соединения и путь на сервере
    СтрокаСоединения = СтрокаURI;
    ПутьНаСервере = "";
    Позиция = Найти(СтрокаСоединения, "/");
    Если Позиция > 0 Тогда
        ПутьНаСервере = Сред(СтрокаСоединения, Позиция + 1);
        СтрокаСоединения = Лев(СтрокаСоединения, Позиция - 1);
    КонецЕсли;
        
    // информация пользователя и имя сервера
    СтрокаАвторизации = "";
    ИмяСервера = СтрокаСоединения;
    Позиция = Найти(СтрокаСоединения, "@");
    Если Позиция > 0 Тогда
        СтрокаАвторизации = Лев(СтрокаСоединения, Позиция - 1);
        ИмяСервера = Сред(СтрокаСоединения, Позиция + 1);
    КонецЕсли;
    
    // логин и пароль
    Логин = СтрокаАвторизации;
    Пароль = "";
    Позиция = Найти(СтрокаАвторизации, ":");
    Если Позиция > 0 Тогда
        Логин = Лев(СтрокаАвторизации, Позиция - 1);
        Пароль = Сред(СтрокаАвторизации, Позиция + 1);
    КонецЕсли;
    
    // хост и порт
    Хост = ИмяСервера;
    Порт = "";
    Позиция = Найти(ИмяСервера, ":");
    Если Позиция > 0 Тогда
        Хост = Лев(ИмяСервера, Позиция - 1);
        Порт = Сред(ИмяСервера, Позиция + 1);
    КонецЕсли;
    
    Результат = Новый Структура;
    Результат.Вставить("Схема", Схема);
    Результат.Вставить("Логин", Логин);
    Результат.Вставить("Пароль", Пароль);
    Результат.Вставить("ИмяСервера", ИмяСервера);
    Результат.Вставить("Хост", Хост);
    Результат.Вставить("Порт", ?(Порт <> "", Число(Порт), Неопределено));
    Результат.Вставить("ПутьНаСервере", ПутьНаСервере);
    
    Возврат Результат;
    
КонецФункции

&НаКлиенте
Процедура ВыполнитьHTTPЗапрос(ПолныйАдресРесурса,имяВрФайла)
    
    
    СтруктураURI = СтруктураURI(ПолныйАдресРесурса);
//    HTTPСоединение = Новый HTTPСоединение(СтруктураURI.Хост, СтруктураURI.Порт); //на случай незащищенного соединения
    HTTPСоединение = Новый HTTPСоединение(СтруктураURI.Хост,,,,,,Новый ЗащищенноеСоединениеOpenSSL);
    
    
    HTTPЗапрос = Новый HTTPЗапрос(СтруктураURI.ПутьНаСервере);
    Попытка
        Результат =  HTTPСоединение.Получить(HTTPЗапрос,имяВрФайла);
    Исключение
         // исключение здесь говорит о том, что запрос не дошел до HTTP-Сервера
         Сообщить("Произошла сетевая ошибка!");
         ВызватьИсключение;
     КонецПопытки;
    
     // Анализируем фатальные ошибки
     // В большинстве случаев нужно остановить работу и показать пользователю сообщение об ошибке,
     // включив в него HTTP-статус
    
     // Ошибки 4XX говорят о неправильном запросе - в широком смысле
     // Может быть неправильный адрес, ошибка аутентификации, плохой формат запроса
     // Подробнее смотри http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4
     Если Результат.КодСостояния >= 400 и Результат.КодСостояния < 500  Тогда
            Сообщить("Код статуса больше 4XX, ошибка запроса.  Код статуса: " + Результат.КодСостояния);
     КонецЕсли;
    
     // Ошибки 5XX говорят о проблемах на сервере (возможно, прокси-сервер)
     // Это может быть программная ошибка, нехватка памяти, ошибка конфигурации и т.д.
     // Подробнее смотри http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5
     Если Результат.КодСостояния >= 500 и Результат.КодСостояния < 600  Тогда
            Сообщить("Код статуса больше 5XX, ошибка сервера. Код статуса: " + Результат.КодСостояния);
     КонецЕсли;
    
     // Обрабатываем перенаправление
     Если Результат.КодСостояния >= 300 и Результат.КодСостояния < 400  Тогда
            Сообщить("Код статуса больше 3XX, Перенаправление. Код статуса: " + Результат.КодСостояния);
         Если Результат.КодСостояния = 302 Тогда
              Сообщить("Код статуса 302, Постоянное перенаправление.");
              АдресРесурса = Результат.Заголовки.Получить("Location");
              Если АдресРесурса <> Неопределено Тогда
                  Сообщить("Выполняю запрос по новому адресу " + АдресРесурса);
                  ВыполнитьHTTPЗапрос(АдресРесурса,имяВрФайла);
              Иначе
                  Сообщить("Сервер не сообщил адрес ресурса!");
              КонецЕсли;
         КонецЕсли;
     КонецЕсли;
     // Статусы 1XX и 2XX считаем хорошими
     Если Результат.КодСостояния < 300 Тогда
           Сообщить("Скорее всего все хорошо");    
           Сообщить("Код статуса: " + Результат.КодСостояния);    
     КонецЕсли;
КонецПроцедуры



&НаКлиенте
Процедура АнализWSDL(Команда)
    
ивф=ПолучитьИмяВременногоФайла("wsdl");
ифWSDL="https://3dsec.sberbank.ru/payment/webservices/merchant-ws?wsdl";;    
    ВыполнитьHTTPЗапрос(ИФWSDL,ивф);
конецпроцедуры
8 ДедМорроз
 
12.06.20
23:33
Ссылка в интернете это не файл,и функция не понимает это же не pho,где так можно.
9 sagitt
 
13.06.20
11:03
У меня работает и сохраняет во временный файл.

Вы проверяли, у вас не сработало?