Имя: Пароль:
1C
 
Обмен по протоколу SOAP
0 Obliterator
 
17.10.16
17:53
Всем привет! Делаю обмен с ИС службы доставки через SOAP, получаю файл с описанием веб-сервисов вот таким образом:

ЛокальныйПутьПубликации = ПолучитьИмяВременногоФайла("wsdl");
КопироватьФайл("http://web.cse.ru/cse82_reg/ws/web1c.1cws";, ЛокальныйПутьПубликации);    
Определения = Новый WSОпределения(ЛокальныйПутьПубликации);

На 2-й строке выдает ошибку вот с таким текстом:

{Документ.ЗаказКлиента.Форма.ФормаДокумента.Форма(5232)}: Ошибка при вызове метода контекста (КопироватьФайл)
    КопироватьФайл("http://web.cse.ru/cse82_reg/ws/web1c.1cws";, ЛокальныйПутьПубликации);    
по причине:
Ошибка копирования файлов
по причине:
Ошибка доступа к файлу 'http://web.cse.ru/cse82_reg/ws/web1c.1cws'
по причине:
Ошибка аутентификации при доступе к ресурсу:  http://web.cse.ru/cse82_reg/ws/web1c.1cws

Я так понял ему нужен логин и пароль, и то и другое я знаю, вопрос - как мне передать этот логин и пароль? В функции КопироватьФайл() их вставить некуда. Есть какой-то другой путь?

Компания вот эта, если что http://www.cse.ru/, может кто знает.
1 Di-dog
 
17.10.16
18:00
Зачем копировать?

Может, лучше так?)
Определения = Новый WSОпределения("http://web.cse.ru/cse82_reg/ws/web1c.1cws";, Логин, Пароль);
2 Obliterator
 
17.10.16
18:06
(1) Да, так получилось, спасибо.
3 Obliterator
 
19.10.16
11:56
Всем привет! В продолжении темы. Пытаюсь работать с веб сервисом вот таким образом:

Подключение проходит без проблем:

Определения = Новый WSОпределения("http://web.cse.ru/cse82_reg/ws/web1c.1cws?wsdl";, "web", "web");
Прокси = Новый WSПрокси(Определения, "http://www.cargo3.ru";, "WebService", "WebServiceSoap12",,,);

Потом пытаюсь получить от сервиса данные, для чего вызываю его функцию вот так:

ТипElement            = Прокси.ФабрикаXDTO.Тип("http://www.cargo3.ru";, "Element");
ПараметрыДляОбмена        = Прокси.ФабрикаXDTO.Создать(ТипElement);
ПараметрыДляОбмена.Key        = "Parameters";
        
ПараметрСправочник        = Прокси.ФабрикаXDTO.Создать(ТипElement);
ПараметрСправочник.Key        = "Reference";
ПараметрСправочник.Value    = "Urgencies";
ПараметрСправочник.ValueType    = "string";
ПараметрыДляОбмена.List.Добавить(ПараметрСправочник);
        
UrgensesCSE = Прокси.GetReferenceData("Мой логин", "Мой пароль", ПараметрыДляОбмена); //Вот тут вызываю функцию.

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

{ФорРус Документ.ЗаказКлиента.Форма.ФормаДокумента.Форма(84)}: Ошибка при вызове метода контекста (GetReferenceData)
        UrgensesCSE = Прокси.GetReferenceData("Мой логин", "Мой пароль", ПараметрыДляОбмена);
по причине:
Ошибка вызова операции сервиса:  {http://www.cargo3.ru}:WebService:GetReferenceData()
по причине:
Аутентификация пользователя не выполнена.  <html>
<head><title> A server error occurred. </title></head>
<h1> Аутентификация пользователя не выполнена.   </h1>
<hr/>
An error occurred processing this request.</html>
по причине:
Аутентификация пользователя не выполнена.

Техподдержка компании, чьим сервисом пользуюсь (http://www.cse.ru/), ответила мне следующее:

А заголовок авторизации вы указываете?

Accept: */*
Connection: Keep-Alive
Content-Type: application/soap+xml; charset=utf-8
Content-Length: 383
Authorization: Basic d2ViOndlYg==
User-Agent: 1C+Enterprise/8.3

Вопрос - что это за заголовок и как мне его указать? В синтаксис-помошнике ничего про это не нашел. Может дело не в этом вообще и что-то не так делаю? В чем тут проблема?
4 oleg_km
 
19.10.16
12:13
Судя по всему у них не https, тогда фидлер тебе в руки.
5 DrShad
 
19.10.16
12:20
что они пишут в своем мануале? каким образом должно происходить обращение к сервису?
6 Obliterator
 
19.10.16
12:20
(4) Эээ, не совсем понял, при чем тут https... С сервисом я работаю только через http, вот так:

Определения = Новый WSОпределения("http://web.cse.ru/cse82_reg/ws/web1c.1cws?wsdl";;, "web", "web");
Прокси = Новый WSПрокси(Определения, "http://www.cargo3.ru";;, "WebService", "WebServiceSoap12",,,);

Или вы не про то?
7 DrShad
 
19.10.16
12:25
заголовки к запросам прописывает веб сервер и работая через WSОпределения их не изменить
8 Fragster
 
гуру
19.10.16
12:26
надо не только у определения логин пароль брать, но и в прокси указывать
9 DrShad
 
19.10.16
12:28
(8) как вариант помогает
10 Obliterator
 
19.10.16
12:29
(5) Вот мануал по функции:

http://joxi.ru/DmB0Jj5Hyy8DAP
11 Di-dog
 
19.10.16
12:33
После
Прокси = Новый WSПрокси(Определения, "http://www.cargo3.ru";;;, "WebService", "WebServiceSoap12",,,);

допишите

Прокси.Логин = ВашЛогин;
Прокси.Пароль = ВашПароль;
12 Serginio1
 
19.10.16
12:34
(6) Проще использовать такое описанин
ОпределениеТ=Новый WSОпределения(ПутьКWSDL);
    WSСервис=ОпределениеТ.Сервисы[0];
    ПроксиWS=Новый WSПрокси(ОпределениеТ, WSСервис.URIПространстваИмен, WSСервис.Имя, WSСервис.ТочкиПодключения[0].Имя);
    
    Ну и для прокси указать логин и  пароль
    ПроксиWS.Пользователь = "SOAP";
    ПроксиWS.Пароль = "12345";
13 Obliterator
 
19.10.16
12:53
(11) Да, вот так заработало, спасибо огромное.