soap:Header #686516


#0 by Pandoch
Пытаюсь организовать взаимодействие с веб-сервисом с помощью описанного wdsl файла. Использую WSПрокси. При попытке вызова операции происходит обращение к сервису и возвращается оттуда ошибка: Security header missing Вот код:     ";, Объект формируется верно. Вот описание сервиса: Там указано следущее: <wsdl:operation name="HotelAvailRQ"> <soap:operation soapAction="; style="document"/> И: Я так понимаю сообщение HotelAvailRQRequest я отправила с параметром  OTA_HotelAvailRQ (мой аргемент - Объект - именно такого типа). Но как через WSПрокси задать параметр Security? Я так понимаю не заполняется часть Header в soap запросе.
#1 by Serginio1
#2 by Serginio1
Кстати а у них есть примеры на других языках?
#3 by Pandoch
Какие примеры? Я не нашла ответа там на свой вопрос, можно ли обратиться  к части Header SOAP запроса через WSПрокси? Или надо другие объекты использовать. я пробовала с помощью  Msxml2.SERVERXMLHTTP отправить - тоже не вышло, чтото ему  content-type не нравится
#4 by Serginio1
Так они никаких примеров не предоставляют?
#5 by Serginio1
Ты уже столько времени на него убила. Проще сделать как я тебе уже советовал.
#6 by Pandoch
xmlHttp.setRequestHeader ("Content-type", "application/soap+xml; charset=""utf-8"""); - устанавливала так, не вышло все равно.
#7 by Pandoch
примеры есть - просто какие soap запросы должны быть, мне это ничего не дает, текст запроса у меня верно формируется
#8 by Pandoch
ну точнее часть Body, а вот Header видимо нет, раз такая ошибка
#9 by Pandoch
там примеры только по части body
#10 by Pandoch
Писать там на C# надо будет? тут даже студии нет блин
#11 by Infsams654
текст soаp- а покажите, пжлста_
#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, если, то все можно заставить работать
#15 by Serginio1
На C# там как раз и добавляется новый параметр.
#16 by Serginio1
У неё нет подписи сообщений. как
#17 by Infsams654
и на дельфях, тоже можно. Но, какого 1с-ника, теперь этому заставишь при чем тут подпись? дело в принципе
#18 by Pandoch
я 1с занимаюсь по воле судьбы. Изучала так то java и c#
#19 by Pandoch
я вобще стажер-4курсник. ну попробую предожить-написать это дело на шарпе, но до этого еще через http попробую покопаться
#20 by Serginio1
На шарпе тебе не нужно описывать все структуры. А вот на Delphi тебе нужно самому будет реализовывать классы с поддержкой IDispatsh. Если конечно Delphi нативный.
#21 by Infsams654
короче: в header формируешь строку xml и в body тоже. Собираешь все в строку envelope и посылаешь post-м по http
#22 by Pandoch
obj = Новый COMОбъект("Msxml2.SERVERXMLHTTP"); obj.open ("POST", ");
#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'.
#24 by Pandoch
ДанныеXML - это XML который должен быть внутри боди, создан верно
#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"). Хотя, там и есть причуды.
#29 by Serginio1
Ну вызов из 1С итд. Все просто до безобразия
#30 by Serginio1
Ну и вызов res = serv.HotelAvailRQ(парам1,парам);
#31 by Serginio1
Так скачай экспресс. И используй.
#32 by Pandoch
начальник посмеялся на предложение сделать внешнюю компоненту и сказал выбросить эти глупости из головы.
#33 by Pandoch
буду бодаться с http
#34 by Infsams654
вот заладил. использование com не есть правильно. Все должно работать платформнонезависимо.
#35 by Serginio1
Хоть через одно место? Ну это выбор каждого индивидуума. Это не ВК. Это обычный ком. Желаю удачи.
#36 by Infsams654
ничего не имею против в конкретном случае. Но когда требуется что-то, что должно работать, например, из рег. задания на сервере под линухом, то, сам понимаешь
#37 by Serginio1
Это уже беда тех кто себе этот линукс выбрал. Скупой платит дважды. Возможности 1С весьма и весьма ограничены. Я сам по большому счету стараюсь не использовать COM. Но во многих вещах просто нет возможности. Но вполне можно использовать Net  для таких целей
#38 by Infsams654
это не беда тех, это твоя беда, когда создаешь тиражируемое решение. Ну, конечно, от конкретной ситуации зависит. "Возможности 1С весьма и весьма ограничены" - полностью согласен
#39 by Serginio1
Я не создаю тиражируемое приложение. Посмотри исходники. Ты меня с кем то спутал.
#40 by Serginio1
Мало того, мне сейчас на семерке нужно и с вэб сервисами и XML по схеме работать. Проще всего работать через нетовский враппер.
#41 by oleg_km
Зачем человека с пути истинного сбивашь, ну хочется ему кактусов, ну на здоровье
#42 by Pandoch
ребят, вы отклонились от темы слегка в сферу выяснения проф.отношений)
#43 by oleg_km
Ты сама определись, хочешь ручками собирать СОАП сообщения - пожалуйста. Я тоже так делал для банк-клиента. Умеешь шарп - пробуй то что предлагает Serginio1. начальник пусть посмеется, когда вы убьете месяц на написание СОАПом в 1С, да помучаетесь с https на HTTPСоединение, а потом 1С в очередном релизе что-нибудь сломает в HTTPСоединение, как это у меня было два раза уже. И я уже три года дружу с WinHTTP. Сейчас переписал на .NET
#44 by Serginio1
Ну ты для начала почитай про протокол
#45 by Pandoch
ок, прочитаю. Можно попробовать реализовать на шарпе. Завтра поставлю на скачку студию.
#46 by Serginio1
Тут уж предлагают статью написать. У тебя опыта больше. Может напишешь?
#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, демаю ребенок пусть занимается чем-нибудь серьезным
#51 by oleg_km
Я качал вроде с самого майкрософта, а ключик где-то потом взял.
#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 и другое пространство имен.
#57 by oleg_km
Попробую на выходных собрать все в кучку
#58 by Pandoch
, - ребята, мы пришли к консенсусу - они убрали спешл фор ас часть header, теперь обычным соапом отправляет - получает) спасибо за активное содействие)
#59 by Serginio1
Ну если соберешься на шарпе писать. То там можно и хедеры в конфигурационном файле прописать. Например
#60 by Pandoch
- спасибо за инфу, интересно так-то. На будущее запомню
#61 by oleg_km
Обычный СОАП - это WSОпределение?
#62 by Serginio1
Вообще 1С могли сами такой порт к Net сделать, чем самим городить свои функционал. Для линукса есть моно, ява. Многие не пользуются потому, что это сторонняя библиотека. Если бы она была в составе дистрибутива и доступ к врапперу через механизм 1С то пользовались бы на прополую. Тем более, что одна и таже библиотека может работать как в 32 так и 64 разрядном приложениях.
#63 by Pandoch
- да
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С