ОБСУЖДЕНИЕ

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

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

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

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

Переделал всё на скалярные типы - работает
 
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. Все работает прекрасно!
 
ну мобуть тогда и не юзать КОМ? -_-
мобуть клиент старенький..., потому вместо МСпердулек (бороться/апдейтить/регать) - просто воспользоваться общепринятыми тулзами
 
ну мобуть тогда и не юзать КОМ? -_-
мобуть клиент старенький..., потому вместо МСпердулек (бороться/апдейтить/регать) - просто воспользоваться общепринятыми тулзами

Клиент Lotus? 8.5.3

А какие тулзы стандартные? Какие еще варианты есть?
 
IMENDAN
приведите ошибки, которые выдаёт "New Web Service Consumer"

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

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

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

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

С некоторыми wsdl это не поможет, если запускать от пользователя, то клиент >=8.
 
Создаешь 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 не мучьте себя :), если среды на джава спокойно работают - то их и пользуйте
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
Спасибо всем! Если есть вопросы задавайте, я вроде выкурил эту тему вдоль и поперек!
 
Можно сюда же, что бы не плодить одинаковые темы?
Вопрос вдогонку :) ... а точнее несколько ...
Есть такая же задача: подключиться к 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: куда их впихивать?

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

Sub SetCredentials(username As String, password As String)

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

Статистика тем

Создано
imendan,
Последний ответ от
divankin,
Ответы
13
Просмотры
8 417