Пространство имен при записи XDTO #723082


#0 by HomoAlbus
Добрый день! Обмениваюсь со сторонним веб сервисом. Создал ws определение и ws прокси. Вызываю метод веб сервиса - получаю ошибку. Выяснили, что проблема с пространством имен. У меня: <soap:Envelope xmlns:soapenv="; xmlns:soapenc="; xmlns:xsd="; xmlns:xsi="; xmlns:soap="; <soap:Header/> <soap:Body> <getList xmlns="; xmlns:xs="; xmlns:xsi="; <param>test</param> А нужно: <soap:Envelope xmlns:soapenv="; xmlns:soapenc="; xmlns:xsd="; xmlns:xsi="; xmlns:soap="; xmlns:int="; <soap:Header/> Другими словами, нужно пространство имен из GetList перенести в soap:Envelope. А как это сделать, если 1С сам генерирует soap уровень?
#1 by tridog
С точки зрения стандарта приведенные фрагменты xml идентичны. Т.е. любой xml parser должен разобрать их одинаково. Уверен, что проблема в этом? Если уверен - кажется, что способов повлиять на форматирование xml при использовании WSПрокси нет. Тогда остается вместо WSПрокси самому слать HTTP-запросы. Т.е. самому формировать xml через ЗаписьXML и передавать его в качестве тела в HTTPЗапрос. Правда тогда придется самому разбирать ответ.
#2 by DmitrO
В первом и во втором варианте элемент getList находится в одном пространстве имен, и оно "; В первом варианте оно там, потому что объявляется xmlns="; - пространство имен по умолчанию (когда элемент не квалифицирован префиксом). Во втором варианте, благодаря объявлению xmlns:int="; - для этого пространства имен определяется префикс int, но элемент getList там квалифицирован как раз этим префиксом. А вот вложенный в него элемент param не квалифицирован, оответственно в первом варианте он в пространстве имен по умолчанию, а это ";; а во втором варианте, оно не определено совсем.
#3 by tridog
Если тип свойства однозначно определен схемой - то зачем его квалифицировать?
#4 by HomoAlbus
Тут мне еще вариант предложили, оставить как есть и заменить только: на: Есть ли возможность при создании xdto как-то явно указать для вложенного элемента xmlns?
#5 by Chikko
Сталкивался с такой же проблемой. Получилось решить только "собиранием" хмл вручную. Может кто-нибудь подскажет более простой способ?
#6 by Serginio1
#7 by Chikko
Спасибо, буду читать!=)
#8 by HomoAlbus
Какой-то уж очень замороченный способ...
#9 by Serginio1
И чего там замороченного? Создать библиотеку 1 минута, написать код даже быстрее чем в 1С зная NET.
#10 by HomoAlbus
Я пролистал весь тред и никак не могу понять как сие можно к данной проблеме применить?
#11 by Serginio1
Там смысл такой, что нужно создать клиента  WCF
#12 by oleg_km
Смысл такой, что в .NET гораздо более приспособлен к работе с сервисами, а   - компонента, которая связывает сборку .NET и 1С. Ну это очень схематично и коротенько. Т.е. в ограниченной по возможностям 1С можно использовать безграничные возможности .NET. Я уже пользую больше года и не мыслю, как можно без этого
#13 by Serginio1
Кстати в новой версии исправил метод public object СоздатьКлиентаWCFConfigFile(string ИмяФайла, object TChannel, string endpointConfigurationName, object endpointAddress=null,string UserName=null, string Password=null)         {             ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap;             {
#14 by oleg_km
У меня нет работы в веб-сервисами. У меня больше всякие системные вещи: сокеты, ком-порты, бинарные файлы, прямой доступ к скулю и пр. Кстати, большой блок по GDI+, рисую карты Яндекс гораздо быстрее, чем посредством HTML
#15 by HomoAlbus
Нда, этому делу я точно ума не дам. Придется видимо писать в xml, а потом заменой "param" на "param xmlns=""" менять. А тот xml что получиться по HTTP отправлять...
#16 by Serginio1
Ясно
#17 by Serginio1
Кстати работая с ЭДИ пришлось заняться кодогенерацией из xsd. Вот этот лучше всех разобрал Кстати здесь про подпись
#18 by Serginio1
17+
#19 by oleg_km
Так в .NET подписи не по ГОСТ, а у меня только с ЭСФ. У Крипто-ПРО есть сборка для криптографии по ГОСТ, но они за нее денег просят, в принципе 1С-овская устраивает.
#20 by Serginio1
Ну если поскать на просторах инета то можно найти и по ГОСТУ например
#21 by oleg_km
Ну вопрос, будет ли это совместимо с ключевыми носителями Крипто-ПРО? Да и вообще-то противоречит законодательству: стойкие криптопровайдеры могут разрабатывать только разработчики, лицензированные ФСБ. Ну и задачи нет все переписать на .NET. Только то, что не работает, отсутствует или гораздо проще сделать на .NET. В остальном пусть 1С тоже что-то делает.
#22 by Serginio1
Кстати а в 1С появилась функция цифровой подписи по ГОСТу? У меня девчонки подписывают через сайт, а значит есть СОМ библиотеки подписи. Меня просто заинтересовал алгоритм подписи, так как он должен быть открытым
#23 by oleg_km
На 8.2 целый объект - МенеджерКриптографии. На сайте например у лерадаты вроде java-applet, но у разработчика криптопровайдера - Крипто-ПРО есть и COM и .NET-сборка. Алгоритм открытый, но на разработку конкретной реализации нужна лицензия, типа ФСБ проверит: не сделал ли ты закладки.
#24 by Serginio1
Спасибо, чего то я его пропустил
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

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