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

imendan

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

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

morpheus

скриптописец
07.08.2006
3 915
1
34
Украина, Киев
#2
IMENDAN
приведите ошибки, которые выдаёт "New Web Service Consumer"

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

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

imendan

Well-Known Member
22.09.2010
116
0
#4
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
6 435
351
homepage.mac.com
#5
ну мобуть тогда и не юзать КОМ? -_-
мобуть клиент старенький..., потому вместо МСпердулек (бороться/апдейтить/регать) - просто воспользоваться общепринятыми тулзами
 

imendan

Well-Known Member
22.09.2010
116
0
#6
ну мобуть тогда и не юзать КОМ? -_-
мобуть клиент старенький..., потому вместо МСпердулек (бороться/апдейтить/регать) - просто воспользоваться общепринятыми тулзами
Клиент Lotus? 8.5.3

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

imendan

Well-Known Member
22.09.2010
116
0
#8
IMENDAN
приведите ошибки, которые выдаёт "New Web Service Consumer"

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

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

susinmn

Well-Known Member
16.10.2007
529
8
33
Саратов
#9
Пока я пытаюсь подключиться через java-коннекторы, может у вас есть идеи по подключению через функцию New Web Service Consumer?
Создаешь New Web Service Consumer, забиваешь имя, в URL that points to a WSDL file забиваешь адрес стороннего wsld. Он тебе подготовит класс(ы) для работы с wsdl. Далее подключаешь Service Consumer к коду, как библиотеку.

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

imendan

Well-Known Member
22.09.2010
116
0
#10
Создаешь 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'.
 

imendan

Well-Known Member
22.09.2010
116
0
#12
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
Спасибо всем! Если есть вопросы задавайте, я вроде выкурил эту тему вдоль и поперек!
 

Dragon108

Well-Known Member
19.01.2010
265
0
30
Россия
#13
Можно сюда же, что бы не плодить одинаковые темы?
Вопрос вдогонку :) ... а точнее несколько ...
Есть такая же задача: подключиться к 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: куда их впихивать?

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

divankin

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

Sub SetCredentials(username As String, password As String)

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