很抱歉不得不这样做,但我没有得到运行这个特定网络服务的人的爱。我之前从未使用过SOAP。
Here's the method I'm trying to call
这是我认为应该运作的代码
public function soapTest(){
echo "start <br />";
use_soap_error_handler(true);
$client = new SoapClient("https://cwi.rezexchange.com:9991/?wsdl");
// here's the problem. What goes in the parenthesis?
$result = $client->CwiRateDetails(????);
echo($result);
echo "<br /> end";
}
现在我猜这会告诉我括号应该包含什么。
POST /Service.asmx HTTP/1.1
Host: cwi.rezexchange.com
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://hotelconcepts.com/CwiRateDetails"
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<CwiRateDetails xmlns="http://hotelconcepts.com/">
<PropertyCode>string</PropertyCode>
<DateFrom>dateTime</DateFrom>
<DateTo>dateTime</DateTo>
<RatePlan>string</RatePlan>
<RoomType>string</RoomType>
<PromotionalRates>boolean</PromotionalRates>
</CwiRateDetails>
</soap:Body>
</soap:Envelope>
我猜是
之类的东西$result = $client->CwiRateDetails($PCode, $DateFrom, $DateTo, $RatePlan, $RoomType, false);
应该有效。但我不知道日期格式是什么,或者房间类型是什么或如何引用费率计划。
现在。在我通过电子邮件与他们一起去猿人之前,我错误地认为他们需要提供更多信息吗?或者是否有某种SOAP技巧可以用来从某个地方获取信息?
答案 0 :(得分:5)
尝试
$result = $client->CwiRateDetails(array(
'PropertyCode' => ...,
'DateFrom' => ...,
'DateTo' => ...,
'RatePlan' => ...,
'RoomType' => ...,
'PromotionalRates' => ...,
));
您必须根据XML架构规范序列化DateFrom
和DateTo
中的日期时间值以及PromotionalRates
中的布尔值:
答案 1 :(得分:1)
日期格式实际上是dateTime(它是SOAP格式类型)。我确信互联网上有一个例子可以将time()(或其他)转换为SOAP :: dateTime字段。
你需要连接的信息就在那里......也许你应该首先阅读webservices?
答案 2 :(得分:0)
Usualy它是关联数组,其中键是您在描述中找到的字段,即CwiRateDetails的PropertyCode,DateFrom,DateTo等
所以它会像
$client->CwiRateDetails(array("PropertyCode"=>"sdsd","DateFrom"=>"",......))
您可以在此页面上看到每种方法的详细信息:https://cwi.rezexchange.com:9991/只需点击程序的名称,您就会看到它的参数并且它会响应。
答案 3 :(得分:0)
你没错,IMO。必须有其他SOAP调用才能获得所需的信息。你看过List Rate Types了吗?方法列表here怎么样?