Вызов Из Лотуса Web-service Разработанной На C# И Sap

imendan

Green Team
22.09.2010
159
4
BIT
0
Здравствуйте, друзья! С Наступлением весны!
Мне необходимо отправить запрос на Web-service, предоставленной системой SAP (подобная задача и с другим Web-service-ом на ASP.NET). Я перепробовал кучу методов. Через объект Msxml2.XMLHTTP, пытался через кнопку New Web Service Consumer, через MSSOAP.SoapClient, еще несколько способов. Но во всех способах я сталкивался с ошибками, о которых молчит господин гугл. Есть ли у кого опыт в этом деле?
1. Можете скинуть ссылку?
2. Можете выбрать способ, на который я предоставлю ошибку?
3. Любая помощь любой совет!

Спасибо заранее! Вообще вопросы интеграции разнородных систем одна из самых актуальных задач на сегодня! Так что братцы, сестрицы )) Прошу помощи! -_-
 
M

morpheus

IMENDAN
приведите ошибки, которые выдаёт "New Web Service Consumer"

У меня часто возникала ошибка когда сервис использовал "чужие" для Лотуса классы, например, сервис из SQL Server-а возвращал мне DataSet в функции.

Переделал всё на скалярные типы - работает
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 985
611
BIT
472
протестируйте

и в общем
 

imendan

Green Team
22.09.2010
159
4
BIT
0
IMENDAN
приведите ошибки, которые выдаёт "New Web Service Consumer"

У меня часто возникала ошибка когда сервис использовал "чужие" для Лотуса классы, например, сервис из SQL Server-а возвращал мне DataSet в функции.

Переделал всё на скалярные типы - работает

Ввожу урл - веб-сервиса, затем выходит окно с вводом юзера и пароля. После ввода, выходит ошибка

The requested operation failed: WSDLException (at /wsdl:definitions/wsdl:portType/wsp:policy):
faultCode=INVALID_WSDL: Encountered unexpected '{http://schemas.xmlsoap.org/ws/2004/09/policy}Policy'.

Добавлено:
протестируйте

и в общем

Я уже протестировал веб-сервис через SoaMoa. Все работает прекрасно!
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 985
611
BIT
472
ну мобуть тогда и не юзать КОМ? -_-
мобуть клиент старенький..., потому вместо МСпердулек (бороться/апдейтить/регать) - просто воспользоваться общепринятыми тулзами
 

imendan

Green Team
22.09.2010
159
4
BIT
0
ну мобуть тогда и не юзать КОМ? -_-
мобуть клиент старенький..., потому вместо МСпердулек (бороться/апдейтить/регать) - просто воспользоваться общепринятыми тулзами

Клиент Lotus? 8.5.3

А какие тулзы стандартные? Какие еще варианты есть?
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 985
611
BIT
472
java коннекторы...
 

imendan

Green Team
22.09.2010
159
4
BIT
0
IMENDAN
приведите ошибки, которые выдаёт "New Web Service Consumer"

У меня часто возникала ошибка когда сервис использовал "чужие" для Лотуса классы, например, сервис из SQL Server-а возвращал мне DataSet в функции.

Переделал всё на скалярные типы - работает

Пока я пытаюсь подключиться через java-коннекторы, может у вас есть идеи по подключению через функцию New Web Service Consumer?
 
S

susinmn

Пока я пытаюсь подключиться через java-коннекторы, может у вас есть идеи по подключению через функцию New Web Service Consumer?

Создаешь New Web Service Consumer, забиваешь имя, в URL that points to a WSDL file забиваешь адрес стороннего wsld. Он тебе подготовит класс(ы) для работы с wsdl. Далее подключаешь Service Consumer к коду, как библиотеку.

С некоторыми wsdl это не поможет, если запускать от пользователя, то клиент >=8.
 

imendan

Green Team
22.09.2010
159
4
BIT
0
Создаешь New Web Service Consumer, забиваешь имя, в URL that points to a WSDL file забиваешь адрес стороннего wsld. Он тебе подготовит класс(ы) для работы с wsdl. Далее подключаешь Service Consumer к коду, как библиотеку.

С некоторыми wsdl это не поможет, если запускать от пользователя, то клиент >=8.

я уже этот делал

вот ошибка, выкладывал тоже: <_<

Ввожу урл - веб-сервиса, затем выходит окно с вводом юзера и пароля. После ввода, выходит ошибка

The requested operation failed: WSDLException (at /wsdl:definitions/wsdl:portType/wsp:policy):
faultCode=INVALID_WSDL: Encountered unexpected '{http://schemas.xmlsoap.org/ws/2004/09/policy}Policy'.
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 985
611
BIT
472
IMENDAN не мучьте себя <_<, если среды на джава спокойно работают - то их и пользуйте
SoaMoa, например - на jvm
SoaMoa is a eclipse RCP application
 

imendan

Green Team
22.09.2010
159
4
BIT
0
IMENDAN не мучьте себя :), если среды на джава спокойно работают - то их и пользуйте
SoaMoa, например - на jvm

Пригалагаю решение! Как подключиться, авторизоваться и вытащить массив из веб-сервиса, использую SoapToolkit30
Код:
Set Client = CreateObject("MSSOAP.SoapClient30")
 
Call Client.MSSoapInit("http://loginassword@test.ttt.kz:8000/sap/bc/srt/wsdl/bndg_asdf45454sadfasdfa45sdss/wsdl11/allinone/ws_policy/document?sap-client=001")
Client.ClientProperty("ServerHTTPRequest") = True
Client.ConnectorProperty("ProxyServer") = "<CURRENT_USER>"
Client.ConnectorProperty("AuthUser") = "Login"
Client.ConnectorProperty("AuthPassword") = "Password"
Client.ConnectorProperty("WinHTTPAuthScheme") = 1
 
xml = Client.ZwsPernr(param1, param2)
i = 0
 
ForAll o In xml
   i = i + 1
End ForAll
 
'Переобъявляем динамические массивы для хранения TypeId и TypeName, в соответствии с количеством типов документов
ReDim TypeId(0 To i -1) As Long
ReDim TypeN(0 To i -1) As String
 
'Записываем значения TypeId и TypeName в соответствующие массивы
i = 0
ForAll o In xml
   TypeId(i) = CLng (o(0).text)
   TypeN(i) = o(1).text
   Print o(2).text
   Print o(3).text
   Print o(4).text
   i = i + 1
End ForAll
Спасибо всем! Если есть вопросы задавайте, я вроде выкурил эту тему вдоль и поперек!
 
D

Dragon108

Можно сюда же, что бы не плодить одинаковые темы?
Вопрос вдогонку :) ... а точнее несколько ...
Есть такая же задача: подключиться к web-сервису SAPа. Пытаемся подключиться через Web Service Consumer, либо через MSSOAP Toolkit 3.0. И там и там есть свои траблы:

1) MSSOAP Toolkit 3.0
Насколько я понял это вообще древняя технология, которая еще была до NET. Framework. Еле нашли дистрибутив на нее под win7 и windows server 2008. (на офф сайте msd-на вообще сказано что MSSOAP Toolkit 3.0 не поддерживается выше win XP). Ну да ладно ... нашли, поставили на локальную машину, стучимся с нее (как в данном примере через CreateObject и т.д.) на web-сервис на сервер ... ответа ноль ... поставили MSSOAP на сервер - ответ получили. Получается что эта штука должна стоять как на запрашивающей, так и на запрашиваемой стороне? Можно ли ее чем то заменить на запрашиваемой стороне?

2) Web Service Consumer
Проблема с
Код:
The requested operation failed: WSDLException (at /wsdl:definitions/wsdl:portType/wsp:Policy):
faultCode=INVALID_WSDL: Encountered unexpected '{http://schemas.xmlsoap.org/ws/2004/09/policy}Policy'.
тоже возникала. Решилась тем, что просто сохранили текст WSDLны и выкинули оттуда все куски, которые упоминали об этой Policy - после этого файл спокойно вставился в Web Service Consumer. (насколько я понял, и о чем говорит спецификация w3c, - это политики для доступа и выполнения операций к тем или иным атрибутам, у SAPеров между делом это генериться автоматически при создании web-сервиса :D). Теперь вопрос ... собственно как подключиться к сервису? насколько я понял при каждом подключении к сапу требуется аутентификация, причем логи и пароль должен быть во что то зашифрован :blink: куда их впихивать?

Заранее спасибо за ответы.
 
D

divankin

По Web Service Consumer
Вам лотус должен был создать класс наследник PortTypeBase, попробуйте установить логин и пароль с помощью метода этого класса

Sub SetCredentials(username As String, password As String)

P.S. Но это для случая простой авторизации. Не знаю прокатит для Сапа
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!