Обращение к Web сервисам из лотуса.

  • Автор темы ficoos
  • Дата начала
F

ficoos

#1
Приветствую форумчан!
Наступил такой период в работе, когда потребовалось связать lotus с IP телефонией Cisco.
В адресной книге лотуса есть номера телефонов сотрудников. Почти у всех пользователей в офисе стоят IP телефоны.
Сейчас сделано так, что к url строке приписывается номер абонента. Неудобства такого обращения связано с
открытием url страницы ( не лотусовой ), для подтверждения id пользователя и пароля.
Как с помощью lotusscript обеспечить запрос wsdl документа и получить его в виде массива строк( чтоб можно бвло записать его в поле( log) для анализа),
и отослать ответ SOAP, чтоб не было открытия url страниц с запросами ввода данных (без написания web, сервисов в лотусе - нет опыта такого рода.),
а следовало сразу соединение?
Ооооочень надо!!!
 

ToxaRat

Чёрный маг
Lotus team
06.11.2007
3 231
17
#2
вот это постановка задачи
не проще ли в лотусе написать кнопку нажав на которую посредством VBA сразу будет идти звонок? :unsure:
 
F

ficoos

#3
нет не проще. у циски свои свойства безопасности.
Ей нужно передать кто звонит( чтобы определить номер телефона звонящего, куда передать соединение) и
номер абонента( кому звонок делается ).
телефонные аппараты тоже заложены с настройках пользователя, для определения стационарный аппарат( ip телефон )
или программный.
Вот такие вот дела....
 
02.04.2005
170
1
#4
Почитайте в хелпе лотуса раздел Lotus Domino Designer Basic User Guide and Reference > Programming Domino for Web Applications > Web services> Creating web service consumers

В принципе ничего сложного, я правда предпочитаю работать с вебсервисами на джаве, а не на скрипте


Вкратце опишу как делать пользователя вебсервиса:

1. Получаем WSDL файл описания веб сервиса (по почте или сохраняем напрямую из URL сервиса)
2. На основе WSDL файла создаем библиотеку вебсервиса (в дизайнере раздел "web service consumer" для дизайнера 8.5). Далее в зависимости от сервиса в библиотеке создадутся классы для работы с сервисом
3. Создаем агент который будет работать с сервисом.
4. Вызов сервиса:
TestServiceLocator locator = new TestServiceLocator();
TestServiceSoap ws = locator.getTestServiceSoap();
locator - указывает где находиться сервис (URL)
ws - объект вебсервиса

У объекта веб сервиса будут методы которые были описаны в WSDL файле. Вызывая их можно обрабатывать данные:

Calendar cal = Calendar.getInstance();
String st = ws.helloWorld(cal); // передаем на вход дату
System.out.println("Hello World = " + st);

получаем результат "Hello World = Ви ввели дату 19-01-2009 10:30:21"
 
F

ficoos

#5
Да блин... Мне не надо создавать web сервис - он уже существует на циске.
программа должна работать с чужим сервисом.
мне надо взять wsdl документ с циски, который не на лотусовом серваке находится.
Разложить и в ответ вписать нужные данные, а потом отослать этот soap ответ.
1. Как взять wsdl в вие массива строк( для анализа ) и вписать этот массив в поле?
2. как отослать массив строк в ответ на запрос ( xml )
вот и все, что мне надо.
Опыта с xml тоже нет.
 
02.04.2005
170
1
#6
Да блин... Мне не надо создавать web сервис - он уже существует на циске.
Не нервничайте молодой человек:) а читайте внимательней что я пишу. Я как раз описал процесс использования со стороны домино чужого вебсервиса. Почитайте сначала документацию, разберитесь как вообще работают вебсервисы. Для тестирования сервисов очень советую использовать http://www.soapui.org/
 
F

ficoos

#7
Во!
А может ли кто подсказать:
-Call Client.MSSoapinit(sWSDL)
-Что такое .MSSoapinit?
Просто в этом месте ошибку рисует и не могу инициализировать коннект и взять wsdl структуру.
web сервис сторонний.
 
F

ficoos

#11
при прямом обращении к стороннему web сервису - ничего не получилось - отказ в доступе.
Вытащил его отдельным файлом на локальный комп и теперь при отправке запроса новая ошибка.

Сама ошибка пришита к сообщению.
Как с этим бороться??? :(
 

Вложения

F

ficoos

#12
Приветствую!
После нескольких дней упорного поиска решения был создан работоспособный агент, написанный на lotusscript.
Проблема решилась. Всем спасибо!!!
 

Akupaka

А че я?.. О.о
04.10.2007
3 360
1
#13
ficoos
поздравляю! поделился бы опытом заодно? другим пригодится
 

Gor

Well-known member
07.06.2005
517
1
#14
Не знаю как реализована работа у ficooz, но у меня работает вот такой вариант со сторонним веб сервисом, помоему я по этой
теме так и не отписался нигде...
(интеграция SAP и Lotus, вызывается WEB сервис на стороне SAP)
чтобы обратиться к Веб сервису из Лотуса необходимо предустановить SOAP Toolkit 3.0
лежит он здесь
SOAP Toolkit 3.0

Без аутентификации:
Код:
Sub Click(Source As Button) 
Dim s As String 
sWSDL = "http://gmvaz.gmavtovaz.local:8000/sap/bc/srt/rfc/sap/ZRUMM_LN_MAT_CREATE?sap-client=100&wsdl=1.1" 
'Create a new MSSOAP client object 
Set Client =CreateObject("MSSOAP.SoapClient30") 
'Initialize connection to the WSDL file and get WSDL structure 
Call Client.mssoapinit (sWSDL) 
'Call ZRUMM_LN_MAT_CREATE function provided by Web service 
s = "test" 
Print Client.ZRUMM_LN_MAT_CREATE(s) 
End Sub
C аутентификацией:

Код:
Sub Click(Source As Button) 
Dim sWSDL As String 

'username, password - логин и пароль доступа к web-сервису (в моём случае был SAP-овский пользователь с необходимыми полномочиями)


username="ИМЯ ПОЛЬЗОВАТЕЛЯ"
password="ПАРОЛЬ"

sWSDL = "http://"+username+":"+password+"@gmprod:8000/sap/bc/srt/rfc/sap/ZRUMM_LN_MAT_CREATE?sap-client=300&wsdl=1.1" 

'Соединение с web-сервисом с аутентификацией 

Set Client =CreateObject("MSSOAP.SoapClient30") 
Call Client.mssoapinit(sWSDL) 

Client.ConnectorProperty("AuthUser") = username 
Client.ConnectorProperty("AuthPassword") = password 
Client.ConnectorProperty("WinHTTPAuthScheme") = 1 

'Вызов функционального модуля ZRUMM_LN_MAT_CREATE который описан в web-сервисе 
'(понятное дело что у каждого он будет свой со своим числом входных и выходных параметров)
's1-3 - входные параметры; o1-o3 - выходные параметры 

s1 = "test1"
s2 = "test2"
s3 = "test3"

o1 = Client.ZRUMM_LN_MAT_CREATE(s1,s2,s3,o2,o3) 'После отработки он передает в функию s1,s2,s3 и возвращает o1,o2,o3

'если бы выходной параметр был только один, код выглядел бы так 
'o1 = Client.ZRUMM_LN_MAT_CREATE(s1,s2,s3) 



End Sub
 

NickProstoNick

Статус как статус :)
Lotus team
22.08.2008
1 805
21
#15
Не знаю как реализована работа у ficooz, но у меня работает вот такой вариант со сторонним веб сервисом, помоему я по этой
теме так и не отписался нигде...
(интеграция SAP и Lotus, вызывается WEB сервис на стороне SAP)
чтобы обратиться к Веб сервису из Лотуса необходимо предустановить SOAP Toolkit 3.0
лежит он здесь
SOAP Toolkit 3.0

Без аутентификации:
Код:
Sub Click(Source As Button) 
Dim s As String 
sWSDL = "http://gmvaz.gmavtovaz.local:8000/sap/bc/srt/rfc/sap/ZRUMM_LN_MAT_CREATE?sap-client=100&wsdl=1.1" 
'Create a new MSSOAP client object 
Set Client =CreateObject("MSSOAP.SoapClient30") 
'Initialize connection to the WSDL file and get WSDL structure 
Call Client.mssoapinit (sWSDL) 
'Call ZRUMM_LN_MAT_CREATE function provided by Web service 
s = "test" 
Print Client.ZRUMM_LN_MAT_CREATE(s) 
End Sub
C аутентификацией:

Код:
Sub Click(Source As Button) 
Dim sWSDL As String 

'username, password - логин и пароль доступа к web-сервису (в моём случае был SAP-овский пользователь с необходимыми полномочиями)


username="ИМЯ ПОЛЬЗОВАТЕЛЯ"
password="ПАРОЛЬ"

sWSDL = "http://"+username+":"+password+"@gmprod:8000/sap/bc/srt/rfc/sap/ZRUMM_LN_MAT_CREATE?sap-client=300&wsdl=1.1" 

'Соединение с web-сервисом с аутентификацией 

Set Client =CreateObject("MSSOAP.SoapClient30") 
Call Client.mssoapinit(sWSDL) 

Client.ConnectorProperty("AuthUser") = username 
Client.ConnectorProperty("AuthPassword") = password 
Client.ConnectorProperty("WinHTTPAuthScheme") = 1 

'Вызов функционального модуля ZRUMM_LN_MAT_CREATE который описан в web-сервисе 
'(понятное дело что у каждого он будет свой со своим числом входных и выходных параметров)
's1-3 - входные параметры; o1-o3 - выходные параметры 

s1 = "test1"
s2 = "test2"
s3 = "test3"

o1 = Client.ZRUMM_LN_MAT_CREATE(s1,s2,s3,o2,o3) 'После отработки он передает в функию s1,s2,s3 и возвращает o1,o2,o3

'если бы выходной параметр был только один, код выглядел бы так 
'o1 = Client.ZRUMM_LN_MAT_CREATE(s1,s2,s3) 



End Sub
А без дополнительных библиотек никак?
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 569
263
#16
NickProstoNick это древнее подняли?
 

NickProstoNick

Статус как статус :)
Lotus team
22.08.2008
1 805
21
#17
что нашел то и поднял :lol:
Просто вот сейчас пробую подключиться к сервису SAP - получаю ошибку

Код:
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'.