我正在尝试向我的肥皂网络服务提出请求。
class DateTime2 extends DateTime {
function __toString() {
return $this->format("d/m/Y H:i");
}
}
$date = new DateTime2();
$client = new SoapClient("http://www.myos.it/sp/smartphonelayer.asmx?wsdl",array("trace" => 1));
$result = $client->SetReservation("Mario Rossi",2,"01234567",$date."");
echo "REQUEST:".$client->__getLastRequest()."<br>";
print_r($result);
我得到的输出是:
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://tempuri.org/">
<SOAP-ENV:Body>
<ns1:SetReservation/>
<param1>2</param1>
<param2>3286026817</param2>
<param3>2011-08-30T07:10:32</param3>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
<br>stdClass Object
(
[SetReservationResult] => stdClass Object
(
[Success] => SqlDateTime overflow. Must be between 1/1/1753 12:00:00 AM and 12/31/9999 11:59:59 PM.
[DeskCode] =>
[Message] =>
)
)
正如你所看到的,当我给它4个参数时,我在soapClient创建的请求中只得到3个参数。
答案 0 :(得分:2)
对于发送参数,您需要使用数组()
同样对于日期时间,XML需要以下格式
class DateTime2 extends DateTime {
function __toString() {
return $this->format("Y-m-d\TH:i:s.000\Z");
}
}
$date = new DateTime2();
$client = new SoapClient("http://www.myos.it/sp/smartphonelayer.asmx?wsdl",array("trace" => 1));
$result = $client->SetReservation(array( "RDescription"=>"Giuseppe Silvestri",
"RNumber"=>2,
"RPhoneNumber"=>"3286026817",
"RDate"=>$date.""));
echo "REQUEST:".$client->__getLastRequest()."<br>";
print_r($result);