Связка Lotus-pwa

Реник

Well-Known Member
08.08.2009
97
0
#1
Здравствуйте, товарищи!!
Интересуюсь вот таким вопросом: у меня есть агент,который запускает метод в стороннем web-service. Для связи с web-service я использую Soap-Toolkit.

Но при отработке агента возникает ошибка ,что ProjectName missing.
Не подскажите в чём проблема ????

вот код вызываемого агента:

Код:
Dim Connector As Variant, Serializer As Variant, Reader As Variant
Set Serializer =createobject("MSOSOAP.SoapSerializer30")
Set connector =createobject("MSOSOAP.HttpConnector30")
Set xmldom=createobject ("Msxml2.DOMDocument.5.0")
Set reader=createobject ("MSOSOAP.SoapReader30")
Set Client =CreateObject("MSOSOAP.SoapClient30") 
Call Client.mssoapinit (wsdllink) 
Connector.Property("EndPointURL") = wsdllink
Print "задаём логин и пароль пользователя,под которым идёт обращение"
'client.ConnectorProperty("AuthUser") = "pbrfilesinout"
'client.ConnectorProperty("AuthPassword") = ",jcchtathtyn" 
'Client.ConnectorProperty("WinHTTPAuthScheme") = 1 
Print "Коннектимся к сервису"
Call Connector.Connect
'	Connector.Property("SoapAction") = "CeatePWA"

Call Connector.BeginMessage
Stop
' устанавливаем Тайм-аут ,чтобы сервис сммог отработать нормально
Client.ConnectorProperty("Timeout") = 700000 

' вызываем метод из wsdl
'Set Res=Client.CeatePWA(param1,param2,param3)
' ловим выходной поток отработки метода wsdl- файла
Serializer.Init Connector.InputStream
Serializer.StartEnvelope "SOAP-ENV" , "http://schemas.xmlsoap.org/soap/encoding/"
Serializer.StartBody
Stop

Serializer.StartElement "CeatePWA" , "http://tempuri.org/"

Print "Передаём в метод параметры"
Serializer.startElement "loginGMP"
Serializer.writeString param1
Serializer.EndElement
Serializer.startElement "number"
Serializer.writeString param2
Serializer.EndElement

Serializer.startElement "urlHook"
Serializer.writeString param3
Serializer.EndElement
Serializer.EndElement
Print "Закончили передачу параметров"
'	Serializer.WriteXml ("C:\MyService.xml")

Serializer.endBody

Serializer.endEnvelope

Connector.EndMessage
errh =Client.FaultString
If errh <> "" Then
Print "Ошибка" +errh
End If
Print "Читаем исходящий поток"
Reader.Load Connector.OutputStream
Print "проверка на наличие ошибок"
If Not ( Reader.faultstring Is Nothing)Then
Print "нашли ошибку при отработке сервиса"
Print Cstr( Reader.faultstring.text )
Else 
Print " Смотрим результаты работы"
'	Msgbox (reader.RPCResult.text)
Msgbox Reader.DOM.xml
End If
<table valign="top" style='margin:0;width:100%;border:1px dashed red;'>[tr]<td align='middle' bgcolor='#ff6060' valign='top' width='1%'>
<FONT color='#ffffff' size='+3'> ! </font>
</td><td align="midle" valign='top' style='background:#fff;'>добавлен тег кода</td>[/tr]</table>
 

Вложения

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 484
360
#2
может кому и интересно отлаживать вашу простыню, сервис, да ещё и микрософтовый КОМ :newconfus:
а не прощели было взять тулзу для проверки сервиса (к-л) и сначала прогнать через неё?
 

nvyush

Well-Known Member
Lotus team
22.04.2009
2 317
0
#4
Реник
Для начала я бы добавил в начало кода On Error Goto ErrHandler, а в конец
exit sub
ErrHandler:
print "Ошибка " & cstr(Err) & " (" & Error & ") в строке " & Cstr(erl)

чтоб понять, где ошибка
 

Реник

Well-Known Member
08.08.2009
97
0
#5
выводит ,что нет ошибок в коде. к первому сообщению прикрепил файл с картинкой, екотоорая возникает при отработке агента. Извините,что сразу не вставил, может эта картинка попможет.
 

nvyush

Well-Known Member
Lotus team
22.04.2009
2 317
0
#6
выводит ,что нет ошибок в коде. к первому сообщению прикрепил файл с картинкой, екотоорая возникает при отработке агента. Извините,что сразу не вставил, может эта картинка попможет.
Судя по картинке, сервису не хватает для нормальной отработки имени проекта. Как работать с сервисами PWA надо либо гуглить, либо спрашивать в других форумах — это уже не лотусовый вопрос.
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 484
360
#7
и конкретно - разбираться с КОМом
видать параметры не те или не туда передаются...
а чтобы получить более управляемый код - делаем на java
 

Реник

Well-Known Member
08.08.2009
97
0
#8
Ребята , всем спасибо за помощь! Но проблему решил самостоятельно: банально не передавал необходимые параметры в метод, хотя был уверен,что всё в порядке.

Комуц интересно,то вот код,котрый мне помог решить проблему.

<!--shcode--><pre><code class='Dim Connector As Variant, Serializer As Variant, Reader As Variant

' Получаем основные параметры для работы метода
param1=doc.GetItemValue("Chief_Executor")(0)
param2=doc.GetItemValue("Final_Number")(0)
param3= doc.GetItemValue("CRM_Hook_Workspace_Link")(0)



Set Client =CreateObject("MSOSOAP.SoapClient30")
Set Serializer =createobject("MSOSOAP.SoapSerializer30")
Set connector =createobject("MSOSOAP.HttpConnector30")
Set xmldom=createobject ("Msxml2.DOMDocument.5.0")
Set reader=createobject ("MSOSOAP.SoapReader30")



Call Client.mssoapinit (wsdllink)
Connector.Property("EndPointURL") = wsdllink


Call Connector.Connect
' устанавливаем Тайм-аут ,чтобы сервис сммог отработать нормально
Client.ConnectorProperty("Timeout") = 700000
Connector.Property("SoapAction") ="http://tempuri.org/CeatePWA"

Call Connector.BeginMessage

' ловим выходной поток отработки метода wsdl- файла
Serializer.Init Connector.InputStream
Serializer.StartEnvelope "SOAP-ENV" , "http://schemas.xmlsoap.org/soap/encoding/"
Serializer.StartBody


Serializer.StartElement "CeatePWA" , "http://tempuri.org/"


Serializer.startElement "loginGMP" , "http://tempuri.org/"
'Serializer.writeString "Луппов Александр Вячеславович"
Serializer.writeString param1
Serializer.EndElement

Serializer.startElement "number" , "http://tempuri.org/"
' Serializer.writeString "zzzzzz11"
Serializer.writeString param2

Serializer.EndElement

Serializer.startElement "urlHook" , "http://tempuri.org/"
' Serializer.writeString "https://store.it.ru/hook/2009/11/2009-000004809"
Serializer.writeString param3
Serializer.EndElement
Serializer.EndElement


Serializer.endBody

Serializer.endEnvelope

Connector.EndMessage

'Проверяем на наличие ошибок

errh =Client.FaultString
If errh <> "" Then
Print "Ошибка" +errh
End If


'Читаем исходящий поток
Reader.Load Connector.OutputStream

Set SoapServer = CreateObject("MSSOAP.SoapServer30")

SoapServer.SoapInvoke Connector.InputStream, Connector.OutputStream, SOAPAction

runmethodfromwsdlfile=Reader.Body.xml'>код[/CODE]