Hi,
I am getting invalid json value error for TDatetime property when I pass an object which have a TDateTime property, to XData server method in TMS Web bootstrap project by by using xDataWebclient.RowInvoke method.
So how to pass an object which have a TDateTime property to XData server method by RawInvoke call.
I have declared a class as follow which I am trying to use in both XData server side and WebClient side to data exchange.
type
TCalls = class(Tobject)
custno: integer;
calldate: TDateTime;
notes: string;
callno: Integer;
status: string;
ispending: string;
endtime: TDateTime;
allday: string;
end;
I have following XData server methods to get and update Calls data
[HttpGet, Route('')]
function GetCalls(incustno: integer; inmonth: integer; inyear: integer): TList<TCalls>;
[HttpPut, Route('{callno}')]
procedure UpdateCall(callno: Integer; ACall: TCalls);
The GetCalls method returns data in following format which seems correct.
{
"value": [
{
"$id": 1,
"custno": 1,
"calldate": "2023-06-07T12:23:42",
"notes": "these are the notes",
"callno": 796,
"status": "O",
"ispending": "Y",
"endtime": "2023-06-07",
"allday": "Y"
}
]
}
I used following code from webclient to call the get Calls API.
XDataWebConnection1.XDataWebClient1.RawInvoke('IcallService.GetCalls', [inUserId, inMonth, inYear], @LoadCallsData_Success);
But when I call the PUT API method UpdateCall to Update a Call's details, I get bad request error. Here I pass callno and an object of TCalls class to the RowInvoke method as follow.
var
icallno: integer;
objCall: TCalls;
...........
XDataWebConnection1.XDataWebClient1.RawInvoke('IcallService.UpdateCall', [icallno, objCall], @UpdateCalls_Success);
Then I get invalid json for calldate field. And when I checked the browser developer tools console tab during webbrowser debug, it shows 400-Bad request error.
PUT http://localhost:2001/api/v1/calls/799 400 (Bad Request)
When, I checked the Network tab Payload tab, then it shows following json payload which is having incorrect value for calldate field which is a TDateTime type and same issue for endtime as well
{
"custno":1,
"calldate":45098.584965277776,
"notes":"Note 5",
"callno":799
"status":"O",
"ispending":"Y",
"endtime":45099.5,
"allday":"N"
}
So, how to solved the above datetime issue for json while passing an object to xData server method by using xdatawebclient RawInvoke call.
While getting data from xData server as object then the datetime is fine but while sending data to xdata server as an object then the datetime is not correct? Am I missing any setting or any property to properly serialize and de-serialize datetime values?
Please help. on how to pass an object which have TDateTime feild to xData server method by using xdatwebclient RawInvoke method.
Thanks