Web Service

doka

Well-known member
18.02.2010
118
0
#1
Здравствуйте!

Хотел бы спросить по такой древней теме как web-сервисы.
Имею лотус и web-сервис на рнр(http://front.fastpoint.ru/front-test.php?wsdl)
С подключением, вроде бы, проблем нет:

sWSDL = "http://front.fastpoint.ru/front-test.php?wsdl"
Set Client =CreateObject("MSSOAP.SoapClient30")
Call Client.mssoapinit(sWSDL)

С вызовом функции, в которой все параметры типа string, тоже проблем нет: Set o1 = Client.AddPackageTest1("", "", "", "", "", "", "")

Проблема возникает с функцией(Set o1 = Client.AddPackageTest2(perem, "", "", "", "", "", "") ), в которой параметр имеет тип "корреспондент":

<xsd:complexType name="Correspondent">
<xsd:all>
<xsd:element name="name" type="xsd:string"/>
<xsd:element name="address" type="xsd:string"/>
<xsd:element name="contactPerson" type="xsd:string"/>
<xsd:element name="contactPhone" type="xsd:string"/>
</xsd:all>
</xsd:complexType>

Чтобы я ему не скармливал(массив, список), выдает ошибку несоответствия типов. Создавал даже у себя класс "correspondent" as XSD_ANYTYPE - не помогло.

Создал у себя web consumer на основе url выше. Проблем не возникло с использованием функций. Как правильно работать с внешними web-сервисами?

Поделитесь мудростью)
 

savl

Lotus team
28.10.2011
2 131
102
#2
doka
Мало я с ними работал, но может поможет.
Лично я импортировал wsdl в lotus, затем делал агента, в который был подключен данный webService.
После этого все работало.
CreateObject("MSSOAP.SoapClient30") не использовал.
Мой пример для http://www.morpher.ru/WebServices/Morpher.asmx?WSDL
В лотусе сохранен как Wev Service Consumer под именем morpher
Код:
Option Public
Option Declare
Use "morpher"
Sub Initialize
On Error GoTo handler

Dim k As New Morphersoap_n0()

Dim d As New Xsd_decimal()
Dim res As Variant

Call d.Setvaluefromstring("13")

Set res = k.Propisrub(d)

GoTo endh
handler:
MsgBox "Error in line " & Erl & Chr(10) & Chr(13) & error$
Resume endh
endh:
End Sub