Web Service

Cleric-Lviv

Lotus team
03.01.2008
600
0
#1
Всем привет!

Вопрос следующий:

Когда вызываю сервис (для теста через лотусиного агента) и указываю параметры начинает ругатся на параметр который обявлен с типом дата

<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">"Web Service"</div></div><div class="sp-body"><div class="sp-content">Web Service Provider:

Web Service Provider:

Class Create_User_Card

Public Function Create_Card(u_name As String, u_mid_name As String, u_last_name As String, _
u_department As String, u_user_id As String, u_in_date As XSD_DATE) As String

code :D

End Function

End Class

Web Service Consumer:

%INCLUDE "lsxsd.lss"
Class Create_User_Card As PortTypeBase

Sub NEW
Call Service.Initialize ("UrnDefaultNamespaceCreate_User_CardService", _
"Create_User_CardService.Domino", "http://192.168.101.1:8080/Test/WebServiceDB.nsf/CreateUserCard?OpenWebService", _
"Create_User_Card")
End Sub

Function CREATE_CARD(U_NAME As String, U_MID_NAME As String, U_LAST_NAME As String, _
U_DEPARTMENT As String, U_USER_ID As String, U_DATE_IN As XSD_DATE) As String
Let CREATE_CARD = Service.Invoke("CREATE_CARD", U_NAME, U_MID_NAME, U_LAST_NAME, U_DEPARTMENT, U_USER_ID, U_DATE_IN)
End Function

End Class


Агент :

Option Public
Use "Create_User_Card"

Sub Initialize

Dim Create_User_Card As New Create_User_Card
Print Create_User_Card.Create_card("Petr", "Petrovich", "Kolobok", "IT", "5091513196", "2013-01-15")

End Sub

нарыл инфу о формате. вроде все ок... пробол с разными параметрами (2013-01-15, 2013-01-15+02:00, 2013-01-15Z, 2013-01-15+00:00)
все равно ошыбка.....
Может кто работал с датами в веб сервисе? помогите плз
 

susinmn

Well-known member
16.10.2007
529
3
#2
Public Function Create_Card(u_name As String, u_mid_name As String, u_last_name As String, _
u_department As String, u_user_id As String, u_in_date As XSD_DATE) As String
XSD_DATE
The proxy class mapped to XML Schema type date. Nillable.

SUB SetValueFromNotesDateTime (value As NotesDateTime)Sets the XML representation of the object from the NotesDateTime object. Any time zone information is ignored.

т.е.
Dim s as New NotesSession
Dim tmpDate as NotesDateTime
Dim tmpXSDDate as New XSD_Date

set tmpDate = s.CreateDateTime("18.02.2013")
Call tmpXSDDate.SetValueFromNotesDateTime(tmpDate)
..................
Print Create_User_Card.Create_card("Petr", "Petrovich", "Kolobok", "IT", "5091513196", tmpXSDDate)
 

garrick

Lotus team
26.10.2009
894
61
#3
Если вы решились писать web-service'ы на Lotus Script. будьте готовы постоянно ходить по граблям несоответствия типов.
 

Cleric-Lviv

Lotus team
03.01.2008
600
0
#4
susinmn

Держите + ! Спасибо.

Но слепец я еще тот :) ..... вчера курил статью на ибм в которой была опись как работать с датой и времям.... и както я прошел мимо...мдя...


garrick

Ваш вариант: Java ?
 

garrick

Lotus team
26.10.2009
894
61
#5
Теперь "Да". Потому как бывали проблемы не только с датами, но и банально с простыми строками. Приходилось скачивать wsdl файл локально, править его руками и только потом скармливать Domino Designer, что бы он сгенерил код, совместимый с работающим web-service'ом. В Java таких проблем нет, к тому же куча всяких библиотек для XML, XSL и пр. часто необходимых для разбора ответов и генерации запросов web-service. Всё равно ваш сервис или потребитель в Domino работает через Axis, только для Lotus Script это делается каким-то хитрым окольным путём. Второй положительный момент - Java код вы, при необходимости, можете оторвать от Domino и исполнять в дальнейшем в другой среде.