#0
by Pandoch
Пытаюсь организовать взаимодействие с веб-сервисом с помощью описанного wdsl файла. Использую WSПрокси. При попытке вызова операции происходит обращение к сервису и возвращается оттуда ошибка: Security header missing Вот код: ";, Объект формируется верно. Вот описание сервиса: Там указано следущее: <wsdl:operation name="HotelAvailRQ"> <soap:operation soapAction="; style="document"/> И: Я так понимаю сообщение HotelAvailRQRequest я отправила с параметром OTA_HotelAvailRQ (мой аргемент - Объект - именно такого типа). Но как через WSПрокси задать параметр Security? Я так понимаю не заполняется часть Header в soap запросе.
#3
by Pandoch
Какие примеры? Я не нашла ответа там на свой вопрос, можно ли обратиться к части Header SOAP запроса через WSПрокси? Или надо другие объекты использовать. я пробовала с помощью Msxml2.SERVERXMLHTTP отправить - тоже не вышло, чтото ему content-type не нравится
#6
by Pandoch
xmlHttp.setRequestHeader ("Content-type", "application/soap+xml; charset=""utf-8"""); - устанавливала так, не вышло все равно.
#7
by Pandoch
примеры есть - просто какие soap запросы должны быть, мне это ничего не дает, текст запроса у меня верно формируется
#12
by Pandoch
<soap:Envelope xmlns:soap="; <soap:Header> <wsse:Security soap:mustUnderstand="1" xmlns:wsse=". org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"> <wsse:Username>USERNAME</wsse:Username> <wsse:Password Type="- profile-1.0#PasswordText">SECRET</wsse:Password> <soap:Body> <OTA_ReadRQ xmlns="; Version="1.0">
#13
by Pandoch
Вот тут в Header я так понимаю объект тоже добавляется типа Security, но как добраться до Header'a через прокси я хз
#14
by Infsams654
а похоже, что никак. Там же он в другом наймспайсе, а прокси создается только для своего xmlns. Так, что (см. еще ) прямые вызовы методов тут не прокатят, т.к. нужна еще в при каждом вызове авторизация через oasis. По http, если, то все можно заставить работать
#17
by Infsams654
и на дельфях, тоже можно. Но, какого 1с-ника, теперь этому заставишь при чем тут подпись? дело в принципе
#19
by Pandoch
я вобще стажер-4курсник. ну попробую предожить-написать это дело на шарпе, но до этого еще через http попробую покопаться
#20
by Serginio1
На шарпе тебе не нужно описывать все структуры. А вот на Delphi тебе нужно самому будет реализовывать классы с поддержкой IDispatsh. Если конечно Delphi нативный.
#21
by Infsams654
короче: в header формируешь строку xml и в body тоже. Собираешь все в строку envelope и посылаешь post-м по http
#23
by Pandoch
возможно я не тот COM-объект использую.. но он короче ошибку такую дает: Cannot process the message because the content type 'text/plain; Charset=UTF-8' was not the expected type 'text/xml; charset=utf-8'.
#25
by Pandoch
Может я еще URL не тот прописываю при создании объекта, я прописала тот, который указа в wsdl в location
#26
by Serginio1
Там тебе писать по минимуму Заходишь в Вижуал студию,Создаешь библиотеку, добавляешь ссылку на службу Добавляешь класс который возвращает объект соединения обернутый в AutoWrap [ClassInterface(ClassInterfaceType.AutoDispatch)] [Guid("Создаешь свой ГУИД")] { return new AutoWrap(new new ServiceReference2.TLConnectServiceClient); } А с этим объектом работаешь из 1С как с COM объектом
#27
by Pandoch
- да, я это читала уже, спасибо. Дело в том, что к студии я в крайнем случае буду обращаться, если с http не выйдет, т.к. ее тут нет вобще на компе
#28
by Infsams654
во обще-то сейчас с 8.2.18 есть в 1С HTTPЗапрос, так что можно не использовать сом (COMОбъект("Msxml2.SERVERXMLHTTP"). Хотя, там и есть причуды.
#32
by Pandoch
начальник посмеялся на предложение сделать внешнюю компоненту и сказал выбросить эти глупости из головы.
#34
by Infsams654
вот заладил. использование com не есть правильно. Все должно работать платформнонезависимо.
#35
by Serginio1
Хоть через одно место? Ну это выбор каждого индивидуума. Это не ВК. Это обычный ком. Желаю удачи.
#36
by Infsams654
ничего не имею против в конкретном случае. Но когда требуется что-то, что должно работать, например, из рег. задания на сервере под линухом, то, сам понимаешь
#37
by Serginio1
Это уже беда тех кто себе этот линукс выбрал. Скупой платит дважды. Возможности 1С весьма и весьма ограничены. Я сам по большому счету стараюсь не использовать COM. Но во многих вещах просто нет возможности. Но вполне можно использовать Net для таких целей
#38
by Infsams654
это не беда тех, это твоя беда, когда создаешь тиражируемое решение. Ну, конечно, от конкретной ситуации зависит. "Возможности 1С весьма и весьма ограничены" - полностью согласен
#40
by Serginio1
Мало того, мне сейчас на семерке нужно и с вэб сервисами и XML по схеме работать. Проще всего работать через нетовский враппер.
#43
by oleg_km
Ты сама определись, хочешь ручками собирать СОАП сообщения - пожалуйста. Я тоже так делал для банк-клиента. Умеешь шарп - пробуй то что предлагает Serginio1. начальник пусть посмеется, когда вы убьете месяц на написание СОАПом в 1С, да помучаетесь с https на HTTPСоединение, а потом 1С в очередном релизе что-нибудь сломает в HTTPСоединение, как это у меня было два раза уже. И я уже три года дружу с WinHTTP. Сейчас переписал на .NET
#45
by Pandoch
ок, прочитаю. Можно попробовать реализовать на шарпе. Завтра поставлю на скачку студию.
#47
by Pandoch
не подскажете кстати, где можно беспроблемно скачать? помню на первых курсах долго парилась, пока норм скачала установочник
#48
by Serginio1
тебе нужно что такого var serv = new ServiceReference2.TLConnectServiceClient; var парам = new ServiceReference2.OTA_HotelAvailRQ; что типа такого. На торрентах все есть.
#49
by Serginio1
Я когда на Шарп перехожу, сразу удовольствие от кодирования получаю. Достал этот 1С уже. Как 7ка так и 8 ка.
#50
by oleg_km
Какого опыта? Я твою обработку пользую, как обезьяна гранату. Ничего не понимаю, главное работает. А так просто портирую код из шарпа в 1С. Типа: Если честно - аналогично. Сейчас дочери помогаю с домашними работами на VS, демаю ребенок пусть занимается чем-нибудь серьезным
#52
by Serginio1
Ну вот не было у меня создать объект public object СоздатьОбъект(object Тип,params object[] параметры) { return new AutoWrap(System.Activator.CreateInstance(Type.GetType(type), параметры)); } А ты добавил, как и обращение к типам итд.
#53
by oleg_km
Так Плагин - это обработка 1С, 1С'ная обертка уде шарповской обертки. Просто мне организационно удобнее менять код только в 1С. Если изменять сам COM на шарпе, то потом его нужно копировать и устанавливать на 100 компьютеров пользователей. Даже если это сделать через ГП, то все равно пользователи должны перезапустить ПК и пр. Но и это небольшая беда. Этот КОМ используется и на сервере, а это значит нужно еще и перезапускать сервер. Поэтому из твоего КОМ на шарпе я ставил только сам враппер и GetType. А СоздатьОбъект это уже реализовано на стороне 1С: получаю статический Activator и пошел клепать из него объекты. Статейку я думал тиснуть, но: - во-первых, есть ощущение, что кроме нас с тобой это никому не интересно и даже не понятно зачем это нужно; - во-вторых, есть же более "продвинутый" проект Elisy, в котором все это с избытком, как я понимаю покрыто. Я даже в какой-то момент думал приобресть и не париться, да уже как-то привык к своему. Если интересно могу выслать что получилось.
#54
by Serginio1
Ну вариант через Reflect проще и его можно использовать из любого сом объекта. 53 Буду благодарен. Просто сейчас как раз нужно делать обмен с Edi Soft адрес
#55
by Serginio1
Я еще добавил у себя public object ТипКакОбъект(object Тип) { if (Тип is AutoWrap) } что бы добраться до объектных методов типа. А так все остальное можно решать через шарповской обертки
#56
by Serginio1
Кстати у них не совсем правильное описание wsse:Security soap:mustUnderstand="1" xmlns:wsse=". org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"> <wsse:UsernameToken> <wsse:Username>USERNAME</wsse:Username> <wsse:Password Type="- profile-1.0#PasswordText">SECRET</wsse:Password> само описание -<xs:schema targetNamespace="; xmlns:xs="; elementFormDefault="qualified"><xs:element name="Security" type="tns:SecurityHeaderType"/>-<xs:complexType name="SecurityHeaderType"><xs:attribute name="Username" type="xs:string"/><xs:attribute name="Password" type="xs:string"/></xs:complexType></xs:schema></wsdl:types> нет никакого UsernameToken и другое пространство имен.
#58
by Pandoch
, - ребята, мы пришли к консенсусу - они убрали спешл фор ас часть header, теперь обычным соапом отправляет - получает) спасибо за активное содействие)
#59
by Serginio1
Ну если соберешься на шарпе писать. То там можно и хедеры в конфигурационном файле прописать. Например
#62
by Serginio1
Вообще 1С могли сами такой порт к Net сделать, чем самим городить свои функционал. Для линукса есть моно, ява. Многие не пользуются потому, что это сторонняя библиотека. Если бы она была в составе дистрибутива и доступ к врапперу через механизм 1С то пользовались бы на прополую. Тем более, что одна и таже библиотека может работать как в 32 так и 64 разрядном приложениях.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
В этой группе 1С
- Ошибка получения значение из временного хранилища
- Как вывести картинку номенклатуры в макет?
- Упр.формы ошибка Нельзя изменять поле, содержащее объект данных
- Вхождение дат в указанный диапазон
- v7: БУ 4.5 Неверная ссылка в графе отбора
- Как поменять цвет строки по условию в универсальном отчете?
- Выгрузка данных из Бухгалтерии в УПП
- ПередЗаписью, ПриЗаписи, ОбработкаПроведения.
- Ошибка системы лицензирования конфигурации СЛК2.0
- Изменение реквизитов справочника в 1с77 из 1с82 по OLE
- Можно ли добавить свои варианты для операторов языка 1С?
- Как получить ЭтотОбъект в обычной форме, если форма не основная?
- Версия для разработчика
- Вопрос по 1С Школьное питание
- Пустое значение в списке значени
- УТ 11 Сегменты партнеров
- Расчет себестоимости в УТ 11.1. Документ Пересорт.
- 1С Розница 2.5.0.7 подключить эмулятор фискального регистратора
- Как получить менеджер из строки - типа значения
- не считается вычисляемое поле, СКД