2009-04-22 7 views
2

Tut mir leid, dass ich das tun muss, aber ich bekomme von den Leuten, die diesen speziellen Webservice betreiben, keine Liebe. Ich habe SOAP noch nie zuvor benutzt.Aufruf einer SOAP-Methode mit PHP für einen bestimmten Dienst

Here's the method I'm trying to call

Und hier ist der Code, den ich sollte Ich vermute, das sagt mir

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"; 

     } 

Jetzt arbeite ich darüber nachzudenken, was die Klammern enthalten sollte.

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> 

Meine Vermutung ist, dass so etwas wie

$result = $client->CwiRateDetails($PCode, $DateFrom, $DateTo, $RatePlan, $RoomType, false); 

funktionieren sollte. Aber ich weiß nicht, was das Datumsformat ist oder welche Zimmertypen sind oder wie ein Tarifplan referenziert wird.

Jetzt. Bevor ich über die E-Mail mit ihnen affe Scheiße Bannana bonkers bonke, habe ich falsch zu denken, es gibt eine Last mehr Informationen, die sie mir geben müssen? Oder gibt es irgendeine Art von SOAP-Tricks, mit denen ich diese Informationen von irgendwoher bekommen kann?

Antwort

5

Versuchen

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

Sie werden Ihre Datum-Zeit-Werte in DateFrom und DateTo und den Booleschen Wert in PromotionalRates gemäß den XML-Schema-Spezifikationen serialisiert werden müssen:

  • boolean: true = 'true' oder 1 und false = 'false' oder 0
  • dateTime: YYYY-MM-DD T hh:mm:ss Z für UTC oder YYYY-MM-DD T hh:mm:ss(+/-)hh:mm für Ortszeit einschließlich Zeitzoneninformationen; Zeitzoneninformation ist optional
0

Usualy es ist assoziatives Array, wo Tasten sind Felder, die Sie in der Beschreibung zu finden, dh Property, Datefrom, DateTo etc für CwiRateDetails

so würde es so etwas wie

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

Sie werden Details von jeder sehen kann Methoden auf dieser Seite: https://cwi.rezexchange.com:9991/ Klicken Sie einfach auf den Namen der Prozedur und Sie werden sehen, es ist Parameter und seine Antwort.

1

Das Datumsformat ist tatsächlich dateTime (das ist ein SOAP-Format-Typ). Ich bin sicher, es gibt ein Beispiel im Internet, das ein time() (oder was auch immer) in ein SOAP :: dateTime Feld konvertiert.

Die Informationen, die Sie verbinden müssen, sind alle da. Vielleicht sollten Sie zuerst auf Webservices nachlesen?

0

Sie sind nicht falsch, IMO. Es muss andere SOAP-Aufrufe geben, um die benötigten Informationen abzuleiten. Haben Sie sich List Rate Types angesehen? Was ist mit der Liste der Methoden here?

Verwandte Themen