|
Не вызывается метод из 1с на веб-сервисе SOAP | ☑ | ||
---|---|---|---|---|
0
zenaXXX
12.02.13
✎
14:02
|
Помогите пожалуйста, не могу разобраться.
Есть веб сервис сторонний, подключаюсь к нему через 1с Определения = Новый WSОпределения("ПутьКМоемуСервису?wsdl"); WSСервис = Определения.Сервисы[0]; Proxy = Новый WSПрокси(Определения, WSСервис.URIПространстваИмен, WSСервис.Имя, WSСервис.ИмяТочкиПодключения[0].Имя); Proxy.addComment("tasks",45578,"Тест","ACCOUNTING",""); на последней строчке выдает ошибку: {Форма.Форма.Форма(8)}: Метод объекта не обнаружен (addComment) Proxy.addComment("tasks",45578,"Тест","ACCOUNTING",""); В чем может быть дело. Из других систем этот метод работает |
|||
1
Serginio1
12.02.13
✎
14:22
|
ИмяВэбСервиса=ТвоёИмя;//
ИмяТочкиПодключения=ИмяВэбСервиса+"Soap"; АдресВэбСервиса="http://ИмяСервера/ИмяБазы/ws/"+ИмяВэбСервиса; Определения= новый WSОпределения(АдресВэбСервиса+"?wsdl",Юзер,Пароль); Прокси= Новый WSПрокси(Определения,URiПространстваИмен,ИмяВэбСервиса,ИмяТочкиПодключения); Прокси.Пользователь = Юзер; Прокси.Пароль = пароль; |
|||
2
Serginio1
12.02.13
✎
14:26
|
Прошу прощения. Это к 1С. Для сторонних может быть не так.
Хотя кроме АдресВэбСервиса должно быть одинаково. Смотри в отладчике |
|||
3
sapphire
12.02.13
✎
14:29
|
(0) wsdl?
|
|||
4
zenaXXX
12.02.13
✎
14:29
|
В отладчике у меня есть только одна точка подключения, ее я и прописываю в Новый WSПрокси(), если вызываю с окончанием soap, она ругается что порт не найден
|
|||
5
zenaXXX
12.02.13
✎
14:30
|
Пробовала и "ПутьКМоемуСервису?wsdl" и "ПутьКМоемуСервису разницы нет
|
|||
6
sapphire
12.02.13
✎
14:30
|
(0) Проверь имя метода по wsdl
|
|||
7
Asmody
12.02.13
✎
14:31
|
создай в пустой конфе WSСсылку, закинь в нее свой wsdl и посмотри, какие методы 1Ска распознает
|
|||
8
sapphire
12.02.13
✎
14:31
|
(5) Если подумать, то ПутьКМоемуСервису?wsdl забив в браузер ты увидишь описание web-сервиса....
|
|||
9
sapphire
12.02.13
✎
14:32
|
(0) web-сервисы чувствительны к регистру букв.
|
|||
10
zenaXXX
12.02.13
✎
14:33
|
создай в пустой конфе WSСсылку, закинь в нее свой wsdl и посмотри, какие методы 1Ска распознает
Она ругается, что формат неверен, в каком формате нужно указывать url |
|||
11
Asmody
12.02.13
✎
14:34
|
(10) а в браузере открывается?
|
|||
12
zenaXXX
12.02.13
✎
14:34
|
Путь у меня ПутьКМоемуСервису.xml?wsdl
|
|||
13
zenaXXX
12.02.13
✎
14:34
|
открывается в xml формате
|
|||
14
Asmody
12.02.13
✎
14:35
|
так и прописывй http://serv.er/path/to/ws/ws.xml?wsdl
|
|||
15
sapphire
12.02.13
✎
14:36
|
(12) в формате URI
|
|||
16
sapphire
12.02.13
✎
14:36
|
Есть веб сервис сторонний - как правило, в виде URI...
|
|||
17
zenaXXX
12.02.13
✎
14:38
|
Пишет что неверный формат, может нужно каку-нибудь библитеку подгрузить?
|
|||
18
sapphire
12.02.13
✎
14:39
|
(17) :)))))))))))))))))))))))))))))))))))))))))))
|
|||
19
sapphire
12.02.13
✎
14:40
|
(17) адрес сервера секретный такой что ли?
|
|||
20
zenaXXX
12.02.13
✎
14:40
|
ага
|
|||
21
Asmody
12.02.13
✎
14:40
|
(17) значит не судьба с этим сервисом из 1Ски поработать.
SOAP он такой SOAP, слишком вольно местами трактуемый |
|||
22
sapphire
12.02.13
✎
14:41
|
(17) Адрес стороннего web-сервиса какой?
|
|||
23
sapphire
12.02.13
✎
14:41
|
(21) Не факт, Вить
|
|||
24
sapphire
12.02.13
✎
14:42
|
(20) Да не нужен мне твой сервант, сама проверь, открывается ли в браузере wsdl-ка
|
|||
25
sapphire
12.02.13
✎
14:42
|
(21) Если там еще и https то вообще песня :)
|
|||
26
zenaXXX
12.02.13
✎
14:43
|
открывая ПутьКМоемуСервису.xml?wsdl я получаю тоже что и когда пишу ПутьКМоемуСервису.xml
|
|||
27
sapphire
12.02.13
✎
14:43
|
(21) использовать платформу 8.3 в качестве ws2ws-proxy :)))
|
|||
28
Balonbl4
12.02.13
✎
14:44
|
ТС, у меня была схожая ситуация, вот статья с моими изысканиями: http://infostart.ru/public/161726/
|
|||
29
sapphire
12.02.13
✎
14:44
|
(26) И что получаешь? *уже просто интересно*
|
|||
30
zenaXXX
12.02.13
✎
14:44
|
не могу использовать 8.3
|
|||
31
Balonbl4
12.02.13
✎
14:45
|
(27) В моем случае это не помогло(сторонний веб сервис был на Oracle Fusion Middlewere)
|
|||
32
sapphire
12.02.13
✎
14:48
|
(31) без разницы. Можно использовать любое MQ с поддержкой SOAP в качестве ws2ws-proxy
|
|||
33
sapphire
12.02.13
✎
14:49
|
(30) Ну не можешь и не можешь.
Короче, ты описание сервиса через обычный браузер видишь? |
|||
34
Balonbl4
12.02.13
✎
14:51
|
(32) Можно поподробнее?
|
|||
35
zenaXXX
12.02.13
✎
14:53
|
я вижу его в формате xml
|
|||
36
sapphire
12.02.13
✎
14:54
|
(35) Ищи метод addComment и смотри что он должен получить.
|
|||
37
zenaXXX
12.02.13
✎
14:55
|
<part name="type" type="xsd:string"/><part name="id" type="xsd:int"/><part name="comment" type="xsd:string"/><part name="user" type="xsd:string"/><part name="attachments" type="soap-enc:Array"/>
|
|||
38
sapphire
12.02.13
✎
14:55
|
(34) MQ = Message Queue, например, RabbitMQ
|
|||
39
zenaXXX
12.02.13
✎
14:56
|
это параметры метода addcomment
|
|||
40
sapphire
12.02.13
✎
14:56
|
(37) Метод в том пространстве имен?
|
|||
41
sapphire
12.02.13
✎
14:57
|
>>Из других систем этот метод работает
Из каких других, 1С или что-то иное? |
|||
42
zenaXXX
12.02.13
✎
14:58
|
что-то иное, код на perl
|
|||
43
sapphire
12.02.13
✎
15:16
|
(42) на той же машине, что и сервер 1С? :)
|
|||
44
zenaXXX
12.02.13
✎
15:17
|
нет
|
|||
45
zenaXXX
12.02.13
✎
15:17
|
на другой машине
|
|||
46
sapphire
12.02.13
✎
15:18
|
(39) ты с регистром имя метода точно не путаешься, дело в том, что метод addcomment из (39) и addComment из (0) с точки зрения SOAP - разные
|
|||
47
sapphire
12.02.13
✎
15:18
|
(42) на perl имя метода как звучит?
|
|||
48
zenaXXX
12.02.13
✎
15:19
|
на perl они вызывают
my $obj = $soap->addComment( $tw_type, $tw_id, $tw_comment, $tw_user, $tw_attachments ); |
|||
49
sapphire
12.02.13
✎
15:19
|
(45) у сервиса есть эхо-метод?
|
|||
50
sapphire
12.02.13
✎
15:24
|
(48) в (0) скорее всего ошибка.
в perl пространство имен и прочее статично или дергает из определения? |
|||
51
zenaXXX
12.02.13
✎
15:24
|
(49) что за эхо-метод?
|
|||
52
sapphire
12.02.13
✎
15:25
|
(51) обычно метод echo реализуют у сервисов для диагностики связи.
|
|||
53
Serginio1
12.02.13
✎
15:34
|
(0) Можешь создать класс на Net для подключения вэб сервиса
а затем через вот этот прокиси v8: Объекты Net в IDispatch подключить его как ком |
|||
54
sapphire
12.02.13
✎
15:35
|
+ в (0) передача параметров неправильная согласно (37):
xml_type_string=ФабрикаXDTO.Тип("http://www.w3.org/2001/XMLSchema","string"); xml_type_int= ФабрикаXDTO.Тип("http://www.w3.org/2001/XMLSchema","int"); parameter_type=ФабрикаXDTO.Создать(xml_type_string,"tasks"); и. т. п. |
|||
55
sapphire
12.02.13
✎
15:37
|
(53) Да там в создании WSProxy косяк, ИМХО
|
|||
56
Balonbl4
12.02.13
✎
15:39
|
(54) 1ска же нормально преобразует в xml примитивные типы, мне кажется, это излишество
|
|||
57
zenaXXX
12.02.13
✎
15:42
|
с фабрикой я тоже пробовала, но проблема именно в том что 1с-ка не видит этот метод
|
|||
58
sapphire
12.02.13
✎
15:52
|
(57) Проблема в создании WSProxy
|
|||
59
sapphire
12.02.13
✎
15:53
|
(57) на (50) ответь
|
|||
60
zenaXXX
12.02.13
✎
15:55
|
(59) Точно сказать не могу
|
|||
61
sapphire
12.02.13
✎
15:56
|
(60) Причина? Ты не знаешь статично оно в perl или динамично?
|
|||
62
zenaXXX
12.02.13
✎
15:57
|
я не вижу весь код
|
|||
63
zenaXXX
12.02.13
✎
15:57
|
мне дали только пример
|
|||
64
Asmody
12.02.13
✎
15:58
|
проблема в том, что wsdl скорее всего не соответствует спецификации. из-за чего 1Ска не может преобразовать его в XTDO.
|
|||
65
sapphire
12.02.13
✎
15:59
|
(64) ИМХО, там она просто из другого пространства имен цепляет.
|
|||
66
sapphire
12.02.13
✎
16:00
|
(64) врядли
|
|||
67
sapphire
12.02.13
✎
16:02
|
(64) Меня вот это смущает:
WSСервис = Определения.Сервисы[0]; Proxy = Новый WSПрокси(Определения, WSСервис.URIПространстваИмен, WSСервис.Имя, WSСервис.ИмяТочкиПодключения[0].Имя); |
|||
68
zenaXXX
12.02.13
✎
16:02
|
что именно (67)
|
|||
69
sapphire
12.02.13
✎
16:02
|
(64) Для сложных и included type есть такая фича
|
|||
70
sapphire
12.02.13
✎
16:03
|
(68) URIПространстваИмен и прочее точно соответсвует определению?
|
|||
71
sapphire
12.02.13
✎
16:03
|
(68) сервис на закрытом порту?
|
|||
72
sapphire
12.02.13
✎
16:04
|
а то играем в "Угадай мелодию"....
|
|||
73
Serginio1
12.02.13
✎
16:12
|
(56) Для anyType нужно явное создание типа. Но в данном случае ругается на метод. Если же в (10) она WS ссылку не может загрузить, то возможно, что 1С не понимает. Если бы была ссыдка можно было бы проверить
|
|||
74
zenaXXX
12.02.13
✎
16:13
|
(71) как это можно проверить
|
|||
75
zenaXXX
12.02.13
✎
17:20
|
(70) <definitions name="Определение" targetNamespace="URIПространстваИмен">
<types><xsd:schema targetNamespace="URIПространстваИмен"/></types> <portType name="WSСервис.ИмяТочкиПодключения"><operation name="addComment"><documentation>яяя</documentation><input message="tns:addCommentIn"/></operation> </portType> <binding name="Binding" type="tns:WSСервис.ИмяТочкиПодключения"><soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/><operation name="addComment"></operation></binding> <service name="Сервис"><port name="WSСервис.ИмяТочкиПодключения" binding="tns:Binding"><soap:address location="URIПространстваИмен"/></port></service><message name="addCommentIn"><part name="type" type="xsd:string"/><part name="id" type="xsd:int"/><part name="comment" type="xsd:string"/><part name="user" type="xsd:string"/><part name="attachments" type="soap-enc:Array"/></message> Что типа этого, в чем может быть ошибка |
|||
76
zenaXXX
12.02.13
✎
17:29
|
и закрывается все </definitions>
|
|||
77
fisher
12.02.13
✎
17:33
|
Я давно разочаровался в 1с-овском SOAP. Сплошь и рядом продвинутые веб-сервисы юзают SOAP шире, чем его поддерживает 1С. В итоге 1С их "не понимает".
|
|||
78
zenaXXX
13.02.13
✎
09:10
|
Помогите, очень надо
|
|||
79
Balonbl4
13.02.13
✎
09:42
|
(78) Вы статью читали, ссылку на которую я давал в самом начале? Делайте как там.
|
|||
80
На стороне добра
13.02.13
✎
10:48
|
Сохрани WSDL-описание в xml-файл, и загрузи WSссылку, если будет ошибка "неверный формат", значит надо редактировать xml. Я так раздел за разделом отлаживал. Еще проверь веб-сервис на валидность, можно через сайт http://www.validwsdl.com/
|
|||
81
fisher
13.02.13
✎
11:06
|
(79) Хорошая идея.
(80) Я тоже как-то было так отлаживал. Избавлял от циклических ссылок в пространствах имен (1С этого не переваривает). Думал, что победа близка. wsdl успешно загрузился. А потом выяснилось, что сервис использует хитрый способ авторизации через установку каких-то заголовков (подробности уже плохо помню), а 1С эту фигню не поддерживает. Было очень обидно. |
|||
82
zenaXXX
13.02.13
✎
13:12
|
файл сохранила, пишет что неверный формат, можно ли какой-нибудь прогой его проверить. Сайт не подходит http://www.validwsdl.com/
|
|||
83
zenaXXX
14.02.13
✎
09:04
|
Может кто знает, что может не нравиться в wsdl 1с, почему она может писать неверный формат?
|
|||
84
zenaXXX
14.02.13
✎
09:04
|
и что такое циклические ссылки в пространствах имен
|
|||
85
Asmody
14.02.13
✎
09:23
|
(82) SoapUI тебе в помощь.
(83) невалидный wsdl |
|||
86
zenaXXX
14.02.13
✎
09:26
|
wsdl валидный, я отправляла запрос с помощью soap-клиента, все нормально отрабатывает
|
|||
87
zenaXXX
14.02.13
✎
09:26
|
дело именно в 1с, ей что-то не нравиться(
|
|||
88
На стороне добра
14.02.13
✎
10:03
|
Скинь wsdl сюда
|
|||
89
zenaXXX
14.02.13
✎
15:42
|
Нашла))))) Может кому поможет:
ошибка была в том что в узле <portType name="WSСервис.ИмяТочкиПодключения"><operation name="Com"><documentation>яяя</documentation><input message="tns:addCommentIn"/></operation> не было выходного <output message="tns:addCommentIn"/> и в самом начале было просто <?xml version='1.0'?>, я поставила <?xml version='1.0' encoding='UTF-8'?> |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |