0 / 0 / 0
Регистрация: 16.07.2007
Сообщений: 849
1

Альтернатива Mssoap По Работе С Веб-сервисом

10.02.2013, 11:27. Показов 25872. Ответов 32
Метки нет (Все метки)

Доброго дня.

Подтолкните куда смотреть.

Есть доминошный веб сервис, надо с ним "пообщатся", MSSOAP - отваливается т.к. не работает на win server 2008.

Идеальная схема через LS агент.
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.02.2013, 11:27
Ответы с готовыми решениями:

Написать веб-сервис, который будет общаться по http c другим веб-сервисом
Здравствуйте уважаемые коллеги! Извините за заголовок, не знал как лучше назвать эту тему. Вопрос в...

SecurityException при работе с Web-сервисом
У меня есть проект Class Library, который ссылается на веб сервис. Также есть проект winforms,...

Просьба Помочь С Веб-сервисом
Доброго времени суток! Есть такая задача: Требуется отсылать некоторые документы с сервера...

Интеграция с веб сервисом - Омнива
Всем привет есть тут такие кто делал интеграцию с ихней апи если её так можно назвать? Добавлено...

32
0 / 0 / 0
Регистрация: 15.05.2009
Сообщений: 1,454
10.02.2013, 11:33 2
может подойдет, посмотрите этот вариант через бридж - http://dpastov.blogspot.com/2010/11/very-n...oap-client.html
0
0 / 0 / 0
Регистрация: 15.01.2010
Сообщений: 256
10.02.2013, 12:12 3
Цитата Сообщение от kizarek
Доброго дня.

Подтолкните куда смотреть.

Есть доминошный веб сервис, надо с ним "пообщатся", MSSOAP - отваливается т.к. не работает на win server 2008.

Идеальная схема через LS агент.
Работайте через Web Services Consumers.
0
0 / 0 / 0
Регистрация: 16.07.2007
Сообщений: 849
10.02.2013, 13:35 4
Цитата Сообщение от OKEN
может подойдет, посмотрите этот вариант через бридж - http://dpastov.blogspot.com/2010/11/very-n...oap-client.html
Не очень я понял как в этом случае обращатся к своему веб-сервису.
0
0 / 0 / 0
Регистрация: 16.07.2007
Сообщений: 849
10.02.2013, 13:45 5
Есть веб сервис, например с таким кодом (взято из примера, где работа идет с SOAP)

Код
Declare global variables accessible from all parts of thys Web service.
Dim session As NotesSession
Dim nabdb As NotesDatabase
Dim nabdoc As NotesDocument
Dim nabview As NotesView
Dim item As NotesItem

Create a LotusScript class.
Class GetPersonInfo
Sub New can be used to assign values to global
variables. Here we can set our session object.
Sub New
Set session = New NotesSession
End Sub
GetPhoneNumber accepts name of a person as function argument.
We set output type to data type String.
Public Function GetPhoneNumber(personname As String) As String
If persons document is not already found in previous actions, find it now
If nabdoc Is Nothyng Then
Locate a document using our search function
result=GetPersonDocument(personname)
End If
If result<>"OK" Then
If no person document is found, return the error message
we got from the GetPersonDocument function
GetPhoneNumber="ERROR: "+result
Exit Function
Else
If person document is found, return content of OfficePhoneNumber field
We use our GetPersonField reusable function for getting field’s content
GetPhoneNumber=GetPersonField("OfficePhoneNumber")
End If
End Function

Public Function GetEmailAddress(personname As String) As String
If nabdoc Is Nothyng Then
If persons document is not already found in previous actions, find it now
result=GetPersonDocument(personname)
End If
If result<>"OK" Then
If no person document is found, return the error message
we got from the GetPersonDocument function
GetEmailAddress="ERROR: "+result
Exit Function
Else
If person document is found, return content of MailAddress field
We use our reusable function for getting field’s content
GetEmailAddress=GetPersonField("MailAddress")
End If
End Function

End Class

Private Function GetPersonDocument(personname As String) As String
Set nabdb=session.CurrentDatabase
Set nabdb=New NotesDatabase("","names.nsf")

Check that database exists and was opened
If Not (nabdb.IsOpen) Then
GetPersonDocument= "Error opening database"
Exit Function
End If

Set nabview = nabdb.GetView("($Users)")
Check that view exists in the database
If nabview Is Nothyng Then
GetPersonDocument = "Error opening view"
Exit Function
End If

Get a document by search key
Set nabdoc = nabview.GetDocumentByKey(personname, True)
If nabdoc Is Nothyng Then
GetPersonDocument = "Cannot find person"
Exit Function
End If
global nabdoc object was set correctly and we can return OK
GetPersonDocument="OK"
End Function

Private Function GetPersonField(FieldName As String)
Get item object. Global object nabdoc was set earlier in GetPersonDocument function.
Set item=nabdoc.GetFirstItem(FieldName)

Sometimes item does not exist in the document, it’s not an error so we return an empty string.
If item Is Nothyng Then
GetPersonField=""
Exit Function
Else
Return first value of the item
GetPersonField=Cstr(item.Values(0))
End If
End Function
По SOAP все просто, вызываем через него функции веб-сервиса, получаем данные.

Код
Set Client =CreateObject("MSSOAP.SoapClient30")
Call Client.mssoapinit ("http://сервак/база/SimpleLSServiceNAB?wsdl")
result = Client.GetPhoneNumber(personname)
0
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
10.02.2013, 14:06 6
По SOAP все просто, вызываем через него функции веб-сервиса, получаем данные.


Set Client =CreateObject("MSSOAP.SoapClient30")
Call Client.mssoapinit ("http://сервак/база/SimpleLSServiceNAB?wsdl")
result = Client.GetPhoneNumber(personname)
так же и в бридже - см. в конце кода
0
0 / 0 / 0
Регистрация: 16.07.2007
Сообщений: 849
10.02.2013, 14:37 7
lmike
чето я туплю, не вижу там примера.
если не трудно под "SimpleLSServiceNAB" пример вызова?

в примере код для Java библиотеки как я понял, причем там веб-сервис не совсем понятно...
0
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
10.02.2013, 18:35 8
LotusScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
** everythyng well need to access our Java classes
Dim jSession As New JavaSession
Dim jClass As JavaClass
Dim jObject As JavaObject
 
** get the IGWebservice class and instantiate an instance of it
Set jClass = jSession.GetClass("ECWebservice")
 
** version of CreateObject and init with path to WSDL)
Set jObject = jClass.CreateObject("(Ljava/lang/String;)V", connection)
jObject.SetContentType(contentType)
** send message and get result: true/false, if true then we got result
If jObject.send(xmldata) Then
me.responce = jObject.GetResponce()
0
0 / 0 / 0
Регистрация: 16.07.2007
Сообщений: 849
11.02.2013, 10:07 9
lmike
Этот кусок кода я видел, не понимаю как он применим в указанном мной примере.
0
0 / 0 / 0
Регистрация: 17.10.2008
Сообщений: 506
11.02.2013, 10:56 10
kizarek, а почему не рассматриваете вариант как сказал Dragon108 ?
По моему так проще всего сделать
0
0 / 0 / 0
Регистрация: 16.07.2007
Сообщений: 849
11.02.2013, 11:23 11
Хотелось уж с этим разобраться)
Щас попробую через Web Services Consumers.
0
0 / 0 / 0
Регистрация: 16.07.2007
Сообщений: 849
11.02.2013, 12:05 12
С эти тоже траблы)
Курю этот мануал www.ibm.com/developerworks/ru/library/domino-webservices/
Скачал axis (http://www.sai.msu.su/apache/ws/axis/1_4/)
Как добавить библиотеки из него в lotus?)
0
0 / 0 / 0
Регистрация: 17.10.2008
Сообщений: 506
11.02.2013, 12:28 13
kizarek Создаешь Web Service Consumer импортиоруешь в него WSDL (http://сервак/база/SimpleLSServiceNAB?wsdl), в нем появятся описание классов, сохраняешь.
В агенте добавляешь use "Имя Web Service Consumer" и используешь в нем описанные классы из Web Service Consumer
0
0 / 0 / 0
Регистрация: 07.02.2106
Сообщений: 812
11.02.2013, 12:31 14
Создайте в дизайнере новый Web Services Consumer, укажите ему wsdl файл сервиса, либо локально как файл, либо через url. Дизайнер сам сгенерит вам код вызова процедур сервиса на Lotus Script или Java. Затем в своём коде подключите этот сгенерённый Web Services Consumer в качестве библиотеки и пользуйтесь сгенерёнными процедурами. Если планируете использовать Lotus Script, могут быть проблемы с типами данных. Проблемы решаемы... Никакой axis скачивать никуда не надо, в лотусе уже всё есть.
0
0 / 0 / 0
Регистрация: 16.07.2007
Сообщений: 849
11.02.2013, 12:55 15
Web Service Consumer != Web Service?
0
0 / 0 / 0
Регистрация: 07.02.2010
Сообщений: 1,063
11.02.2013, 13:00 16
Consumer - это клиент для сервиса.
0
0 / 0 / 0
Регистрация: 17.10.2008
Сообщений: 506
11.02.2013, 13:02 17
kizarek
Если у Вас клиент семерка, там вроде нет разделения на Consumer и Provyder, там просто Web service
0
0 / 0 / 0
Регистрация: 16.07.2007
Сообщений: 849
11.02.2013, 13:16 18
8.0.2
я правильно понимаю что нужно:
1. Создаем веб-сервис. Пример выше "SimpleLSServiceNAB".
2. Сохраняем его как SimpleLSServiceNAB.wsdl
3. Создаем еще 1 веб-сервис (SimpleLSServiceNAB_NEW), импортим в него wsdl, получаем такой код:

LotusScript
1
2
3
4
5
6
7
8
9
10
11
12
13
%INCLUDE "lsxsd.lss"
Class GetPersonInfo
 
Sub NEW
End Sub
 
Function GETPHONENUMBER(PERSONNAME As String) As String
End Function
 
Function GETEMAILADDRESS(PERSONNAME As String) As String
End Function
 
End Class
4. Теперь подключаем его как библиотеку?
0
0 / 0 / 0
Регистрация: 15.01.2010
Сообщений: 256
11.02.2013, 13:43 19
Цитата Сообщение от kizarek
8.0.2
я правильно понимаю что нужно:
1. Создаем веб-сервис. Пример выше "SimpleLSServiceNAB".
2. Сохраняем его как SimpleLSServiceNAB.wsdl
3. Создаем еще 1 веб-сервис (SimpleLSServiceNAB_NEW), импортим в него wsdl, получаем такой код:

LotusScript
1
2
3
4
5
6
7
8
9
10
11
12
13
%INCLUDE "lsxsd.lss"
Class GetPersonInfo
 
Sub NEW
End Sub
 
Function GETPHONENUMBER(PERSONNAME As String) As String
End Function
 
Function GETEMAILADDRESS(PERSONNAME As String) As String
End Function
 
End Class
4. Теперь подключаем его как библиотеку?
Да, все так.
Но при таком подходе есть и минус - при каждом изменении web-сервиса, чью wsdl вы импортите (в данном примере это веб-сервис SimpleLSServiceNAB и его SimpleLSServiceNAB.wsdl) придется скорее всего заново импотрить эту wsdl в web service consumer (здесь - SimpleLSServiceNAB_NEW). (но может и будет работать, если изменения в сервисе SimpleLSServiceNAB не серьезные ) И не факт что сложные и нестандартные лотусовые типы, которые есть в wsdl, распарсятся вам в типы, методы и классы так же, как и в предыдущий раз - тупо может просто поменяться их префикс :( С MSSOAP конечно в этом плане попроще, но зато Web Service consumer работает как часы, а не через пень колоду


Вот была тема:
0
0 / 0 / 0
Регистрация: 16.07.2007
Сообщений: 849
11.02.2013, 14:12 20
веб-сервис как библиотеку лотус не дает объявить. может таки как consumer нужно делать библиотеку?

Добавлено: Если объявлять как библиотеку то такой код

LotusScript
1
2
3
4
5
Use "SimpleLSServiceNAB_NEW"
Sub Initialize
Dim PersonInfo As New GetPersonInfo
Print PersonInfo.GETEMAILADDRESS("James Bond")
End Sub
выдет ошибку

LotusScript
1
4746-Web Service GetPersonInfo method GETEMAILADDRESS error org.xml.sax.SAXException: Processing instructions are not allowed withyn SOAP messages
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.02.2013, 14:12
Помогаю со студенческими работами здесь

Ошибка при обмене данных с веб сервисом
В общем при обмене возникает ошибка &quot;Сервер не найден {http:/localhost/ws1}:WebObmen&quot; ExecChange...

Android аппликация работаюшея с веб сервисом на .net(c#)
Доброе время суток. Мне нужно реализовать андроид аппликацию которая будет получать данные из веб...

Как добавить http авторизацию (http authorization header) при работе с web-сервисом?
Добрый день! Проблема такая. Есть веб-сервис который при подключения требует авторизацию. Скачал...

Отправная точка для создания WPF клиента для работы с веб-сервисом по протоколу SOAP
Здравствуйте. Задача - написать клиент для уже имеющегося веб-сервиса. В наличии файл...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru