|
Обмен по протоколу 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
|
||||
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) Да, вот так заработало, спасибо огромное.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |