I work with web services written in C#, with PHP on my (client) side.
SOAP __getTypes
returns that one of the expected parameter to be dateTime birthDate
. I tried to send parameter in different ways, like
$date = new DateTime("now");
$wsclient->SomeFunction(array($date->format("Y-m-d\TH:i:s"));
or $date->format('c')
I even wrote it just as a string 1932-11-12T00:00:00
and so on. I do not get soap exception, but function returns that received birthDate
value was 0001-01-01T00:00:00
.
I had a meeting with the developer of web services and he showed me that when he passes System.DateTime
type variable to the function it works properly, but he did it locally in C# and not over the web service, just doing
date = new DateTime(1999,9,9,0,0,0);
SomeFunction(date);
What i want to know is how can i pass c# DateTime
type from PHP. I guess that i'm doing it right with $date->format('c')
or with $date->format("Y-m-d\TH:i:s")
.
I just want to make sure that this part of code is right and if so, search for problem in other place.
UPDATE: What we came to is: they changed code on their side. Data type remains the same (DateTime), I don't have an idea what they did there, but if I get any information, I'll keep this post up to date.
After few years: They just had no idea what they were doing and I got stuck with a problem, that was just impossible to solve by my side. If WSDL requests DateTime
and you send it properly (SOAP doesn't throw an exception) and it doesn't work as it should, than you should be looking for the problem on the other end, for sure.