2009-04-22 61 views
2

抱歉,必須這樣做,但我沒有從運行此特定Web服務的人那裏獲得愛。我以前從未使用過SOAP。使用PHP調用特定服務的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); 

應該工作。但我不知道日期格式是什麼,房間類型是什麼或者如何引用費率計劃。

現在。在我和他們一起通過電子郵件去猿人bannana bonkers之前,我錯誤地認爲他們需要給我加載更多信息?或者是否有某種我可以用來從某處獲取信息的欺騙手段?

回答

5

嘗試

$result = $client->CwiRateDetails(array(
    'PropertyCode'  => ..., 
    'DateFrom'   => ..., 
    'DateTo'   => ..., 
    'RatePlan'   => ..., 
    'RoomType'   => ..., 
    'PromotionalRates' => ..., 
)); 

你必須根據XML Schema規範中DateFromDateToPromotionalRates布爾值序列化的日期時間值:

  • booleantrue = 'true'1false = 'false'0
  • dateTimeYYYY-MM-DD T hh:mm:ss Z爲UTC或YYYY-MM-DD T hh:mm:ss(+/-)hh:mm本地時間包括時區信息;時區信息可選
0

Usualy它的關聯數組,其中鍵是你在描述發現場,即PropertyCode,DateFrom,DateTo等爲CwiRateDetails

所以它會是這樣的

$client->CwiRateDetails(array("PropertyCode"=>"sdsd","DateFrom"=>"",......)) 

你可以看到每一個細節本頁的方法:https://cwi.rezexchange.com:9991/只需點擊過程的名稱,你會看到它的參數,它的響應。

1

日期格式實際上是dateTime(這是一種SOAP格式類型)。我確信在互聯網上有一個例子將time()(或其他)轉換爲SOAP :: dateTime字段。

你需要連接的信息都在那裏..也許你應該先閱讀web服務?

0

你沒有錯,IMO。必須有其他SOAP調用才能派生出您需要的信息。你看過List Rate Types?方法列表here的列表如何?