Bonjour,
J'essaye sans succès de me connecter à un service web (SOAP 1.1) qui
utilise des messages XML sans fichier WSDL.
Toute la documentation que j'ai pu trouver est basée sur du WSDL, il y
a très peu de documentation sur les envois directe de message XML.
Voici le code :
$location = 'https://test.reservit.com/testota';
$login = 'foo';
$password = 'bar';
$CompanyName = 'baz';
$ChainCode = '00';
$request = '<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<OTA_HotelSearchRQ Version="2006" MaxResponses="100"
xmlns="http://www.opentravel.org/OTA/2006/01"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<POS>
<Source>
<RequestorID Type="2" ID="0">
<CompanyName>'.$CompanyName.'</CompanyName>
</RequestorID>
</Source>
</POS>
<Criteria>
<Criterion>
<!-- On which list of hotels, or channel I make the search -->
<HotelRef ChainCode="'.$ChainCode.'" />
</Criterion>
<Criterion>
<!-- The period ! which is mandatory -->
<StayDateRange Start="2009-10-06" End="2009-10-15" />
</Criterion>
</Criteria>
</OTA_HotelSearchRQ>
</soap:Body>
</soap:Envelope>';
$client = new SoapClient(null, array('location' => $location,
'uri' => 'http://
www.opentravel.org/OTA/2006/01',
'style' => SOAP_DOCUMENT,
'use' => SOAP_LITERAL,
'login' => $login,
'password' => $password,
'trace' => 1));
$client->__doRequest($request, $location, 'POST', SOAP_1_1);
echo "<br>\nRequestHeaders :<br>\n" . $client->__getLastRequestHeaders
() . "<br>\n";
echo "<br>\nRequest :<br>\n" . $client->__getLastRequest() . "<br>\n";
echo "<br>\nResponseHeaders :<br>\n" . $client-
>__getLastResponseHeaders() . "<br>\n";
echo "<br>\nResponse :<br>\n" . $client->__getLastResponse() . "<br>
\n";
La méthode "__getLastRequestHeaders" affiche l'en-tête envoyé.
Ce qui m'étonne, c'est que la méthode "__getLastRequest" ne retourne
rien.
Est-ce que j'utilise correctement le méthode "__doRequest" ?
Merci de vos réponses.