|
Сторонний Web сервис | ☑ | ||
---|---|---|---|---|
0
Zixxx
29.04.14
✎
11:29
|
Есть сторонний сервис, на который тупо нужно отправить xml, если перейти по ссылке в браузере, то можно будет увидеть следующий текст.
Message Servlet is in Status OK Status information: Servlet com.sap.aii.adapter.soap.web.MessageServlet (Version $Id: //tc/xpi.adapters/NW731EXT_10_REL/src/_soap_application_web_module/webm/api/com/sap/aii/adapter/soap/web/MessageServlet.java#5 $) bound to /MessageServlet Classname ModuleProcessor: null Lookupname for localModuleProcessorLookupName: localejbs/ModuleProcessorBean Lookupname for remoteModuleProcessorLookupName: null ModuleProcessorClass not instantiated ModuleProcessorLocal is Instance of com.sun.proxy.$Proxy541 ModuleProcessorRemote not instantiated Разработчики с той стороны говорят, что это всего лишь результат, что адрес правильный, и SAP PI слушает и ждет WS. Пробовал конечно же как-то умудриться отправить средствами 1с, но ничего не вышло, еще кинули wsdl его можно посмотреть по ссылку http://yadi.sk/d/xcpDOhG6Nd3Dm. Из него выдергивал методы, но все безуспешно, говорит нет такого сервиса. При создании определения, везде пустота Определения = Новый WSОпределения(АдресСервиса, ИмяПользователя, Пароль); Может кто в курсе что делать, куда копать, как это все работает? |
|||
1
Serginio1
29.04.14
✎
11:43
|
Сохрани этот WSDL и загрузи в конфигуратор указав путь на этот файл. Либо
ОпределениеТ=Новый WSОпределения(ПутьКФайлу_wsdl); WSСервис=ОпределениеТ.Сервисы[0]; прокси=Новый WSПрокси(ОпределениеТ, WSСервис.URIПространстваИмен, WSСервис.Имя, WSСервис.ТочкиПодключения[0].Имя); |
|||
2
Zixxx
29.04.14
✎
12:26
|
(1) Вот что пишет...
ОпределениеТ=Новый WSОпределения("e:\SI_TransactionalDataFrom1CService.wsdl"); по причине: Неверный формат. |
|||
3
Serginio1
29.04.14
✎
12:37
|
(2) VS 2013 прекрасно его прочитала. Как альтернатива
v8: Подскажите хорошую статью как в С# создать веб-сервис и прикрутить к 1С 8.2? |
|||
4
Zixxx
29.04.14
✎
12:54
|
(3) У меня vs тоже нормально прочитать, но 1с по моему не читает какие-то типы массивов или чего-то там, может по этому :(.
А есть пример обработки и компоненты, а то вообще не понятно с чего там начинать, куда что заворачивать и чем оборачивать |
|||
5
Serginio1
29.04.14
✎
13:02
|
http://1c.proclub.ru/modules/mydownloads/personal.php?cid=142&lid=9569
здесь компонента и описание. Здесь обсуждение v8: v8: Использование сборок .NET в 1С 7.x и 8.x и пример использования конфигурационного файла |
|||
6
Serginio1
29.04.14
✎
13:04
|
Там внутри архива есть NetObjectToIDispatch.docx
Нужные DLL. Запускаем РегистрацияКомСервера.exe и выбираем NetObjetToIDispatch45.dll которая лежит в DLLNetObjetToIDispatch45 Затем запускаем толстого клиента и ТестNetObjectToIDispatch.epf Для тестов вэб сервисов (кнопки «Тест вызова сервиса» и «Вызов сервиса используя config file») нужно выбрать Сборку ФайлыNetObjectToIDispatch\СборкиДляТестов\ NestNet45.dll Для тестов событий применяется (кнопка «Тест отслеживания изменений в директории») Нужно Выбрать Сборку ФайлыNetObjectToIDispatch\СборкиДляТестов\ ПроектИспользованияДелегатов.dll В поле Каталог для отслеживания изменений Выбрать путь для отслеживания изменений в текстовых файлах Для тестов загрузки без регистрации, информации о типе кнопки («Загрузка com объекта Без ПрогИД», «Загрузка com объекта Без ПрогИД», «Тест expando object») Выбираем Имя Файла сборки ФайлыNetObjectToIDispatch\СборкиДляТестов\ЗагрузкаCOMОбъектаБезРегистрации.dll Выбираем НадписьКаталогОтличнойОтТекущейВерсии1с нужный каталог Для тестирования обмена сообщениями по TCP/IP COM порта кнопки («ЗапуститьСерверTCPIP», «Отправить команду», «Открыть порт сканера») Файл NetObjectToIDispatch\СборкиДляТестов\ОбменПоTCPIP.dll Только там пример нужно запускать из разных приложений. Я и кнопку отправить команду сделал невидимой. Если из одного приложения сделать, то посылающий ждет ответ и как сервер не может принять событие. Такой дид лок получается. Я этот сервер в свое время для КПК делал с WiFi для плохой связи. Поэтому данные сжимаются и декодируются в AANSI |
|||
7
Zixxx
29.04.14
✎
14:51
|
А чем этот файл не устраивает 1с, может в файле есть еще какие-нибудь ссылки которых не хватает?
|
|||
8
Адинэснег
29.04.14
✎
15:01
|
САП отстой
|
|||
9
Serginio1
29.04.14
✎
15:11
|
Там на Policy ругается и порт.
|
|||
10
Zixxx
29.04.14
✎
15:33
|
(9) А где видно что на Policy и порт ругается? В wsdl только визуально увидел что policy там ссылка на что-то еще есть
|
|||
11
Serginio1
29.04.14
✎
15:43
|
Я неправильно Policy вырезал. Поэтому на порт и ругался.
У 1С проблемы со спецификаций WS-* 1С. Например Ws-Security Ws-Reliable и др |
|||
12
Zixxx
29.04.14
✎
20:36
|
В общем сделал следующим образом, поправил wsdl, подгрузил его из файла. Отправил данные. С той стороны получил ответ.
вы отправляете данные, так: <MT_1C_MasterData> А нам нужно так: <ns0:MT_1C_MasterData xmlns:ns0="http://1C_master_data"> Что означают эти приставки ns0: почему хотят получать именно так, если в wsdl этого нигде нет. И можно ли х как-то добавить? |
|||
13
Zixxx
30.04.14
✎
09:52
|
ап
|
|||
14
Zixxx
30.04.14
✎
10:54
|
fg
|
|||
15
Serginio1
30.04.14
✎
11:10
|
(12) По схеме у тебя xmlns:p1
А из .Net не пробовал отправлять? |
|||
16
Zixxx
30.04.14
✎
11:31
|
(15) Через Net. пока не пробовал, не вывезу остальные задачи по времени, пока пошел по протоптанной дорожке, если что будет время на праздниках с net по разбираться.
А к чему эти приставки относятся p1? И должна ли 1С была отправить p1, так как мне пишут что вроде этих приставок вообще нет. Я так понимаю что это указание типа (явное не явно по аналогу с записью xml), а при отправке это как-то указывается или это совсем другое? |
|||
17
Serginio1
30.04.14
✎
11:40
|
(16) Там делов то. Создал приложение, прописал ссылку.
Подключился вызвал метод. Делов на пару минут. Наверняка у них и примеры есть. Как правило все тестируют на Net. В ЗаписьXML есть метод ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("xsi", "http://www.w3.org/2001/XMLSchema-instance"); А вот как это это к твоей задаче прикрутить не знаю. |
|||
18
Zixxx
30.04.14
✎
12:06
|
(17) А при создании ОбъектаXDTO из фабрики, можно как-то указать тип самому если там anyType по умолчанию получается?
|
|||
19
Serginio1
30.04.14
✎
12:21
|
Нет у тебя в схеме прописано. По уму это должно быть в WSОпределения но там нет никакого СоответствиеПространстваИмен
|
|||
20
Zixxx
30.04.14
✎
13:58
|
Может есть возможность прописать эти данные в wsdl или создать свой пакет с нужными параметрами а потом уже полученный из пакета объект поместить в объект из wsdl.
Смотрели Fiddler-ом что отправляется: 1С: [code] <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Header/> <soap:Body> <MT_1C_MasterData xmlns="http://1C_master_data" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <Header/> <MasterData> <Header/> <Code>000000076</Code> <SearchTerm/> <Name>COFACE SA SWISS BRANCH</Name> <Address>Rue Belle-Fontaine 18, CP 431, CH-1001, Lausanne, Swiss</Address> <INN/> <OKPO/> <KPP/> <Telephone>+41 21 331 00 40</Telephone> <Code_Group/> </MasterData> </MT_1C_MasterData></soap:Body> </soap:Envelope> [/code] SoapUI: [code] <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:c="http://1C_master_data"> <soapenv:Header/> <soapenv:Body> <c:MT_1C_MasterData> <Header> <Message_ID></Message_ID> <Number></Number> <TimeStamp></TimeStamp> <System_ID></System_ID> </Header> <MasterData> <Header> <Message_ID></Message_ID> <Number></Number> <TimeStamp></TimeStamp> <System_ID></System_ID> </Header> <Code>000000076</Code> <SearchTerm></SearchTerm> <Name>COFACE SA SWISS BRANCH</Name> <Address>Rue Belle-Fontaine 18, CP 431, CH-1001, Lausanne, Swiss</Address> <INN></INN> <OKPO></OKPO> <KPP></KPP> <Telephone>+41213310040</Telephone> <Code_Group></Code_Group> </MasterData> </c:MT_1C_MasterData> </soapenv:Body> </soapenv:Envelope> [/code] |
|||
21
Serginio1
30.04.14
✎
14:17
|
Вообще то этот вопрос нужно задавать разработчикам
У тебя в заголовке прописано соответствие пространства имен MT_1C_MasterData xmlns=" без указания соответствия. То есть все что без префикса должно соответствовать http://1C_master_data |
|||
22
Zixxx
30.04.14
✎
14:27
|
(21) Это в ручную самому можно как-то прописать в wsdl?
|
|||
23
Zixxx
30.04.14
✎
14:49
|
Через SoapUI же с префиксом отправляет, может где в пакете что указать чтобы тоже префикс появился, но не соображу где и что именно
|
|||
24
Zixxx
30.04.14
✎
16:25
|
ап
|
|||
25
Zixxx
30.04.14
✎
17:44
|
ап
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |