Вход | Регистрация


Обмен по протоколу SOAP

Обмен по протоколу SOAP
Я
   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/, может кто знает.
 
 
   Di-dog
 
1 - 17.10.16 - 18:00
Зачем копировать?

Может, лучше так?)
Определения = Новый WSОпределения("http://web.cse.ru/cse82_reg/ws/web1c.1cws";, Логин, Пароль);
   Obliterator
 
2 - 17.10.16 - 18:06
(1) Да, так получилось, спасибо.
   Obliterator
 
3 - 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

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

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

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

допишите

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

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует