Web services : Client SOAP PHP
Résolu
clementinemonrency
Messages postés
7
Date d'inscription
Statut
Membre
Dernière intervention
-
clementinemonrency Messages postés 7 Date d'inscription Statut Membre Dernière intervention -
clementinemonrency Messages postés 7 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je suis en train de créer un client pour communiquer avec un web services, mais je suis bloqué sur une erreur d'authentification.
Voici le code de test que j'ai :
Je suis en train de créer un client pour communiquer avec un web services, mais je suis bloqué sur une erreur d'authentification.
Voici le code de test que j'ai :
<?php
// la requête soap
$data='POST /API/API.asmx HTTP/1.1
Host: api.xxx.net
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://tempuri.org/GetHotels"
<?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>
<GetHotels xmlns="https://www.bing.com/?toHttps=1&redig=E2A68CC53634401DA4F71B1599B6E7DE">
<request>
<AGENTINFO>
<AGENT_ID>xxx</AGENT_ID>
<AGENT_PWD>xxx</AGENT_PWD>
</AGENTINFO>
<PASSENGERLIST>
<PASSENGER>
<ID>1000</ID>
<TITLE>titre1</TITLE>
<LASTNAME>lastname1</LASTNAME>
<FIRSTNAME>firstname1</FIRSTNAME>
<PASSTYPE>ADT</PASSTYPE>
<DOB>12.02.1990</DOB>
<GENDER>MR</GENDER>
</PASSENGER>
<PASSENGER>
<ID>1001</ID>
<TITLE>titre2</TITLE>
<LASTNAME>lastname2</LASTNAME>
<FIRSTNAME>firstname2</FIRSTNAME>
<PASSTYPE>ADT</PASSTYPE>
<DOB>05.11.1980</DOB>
<GENDER>MR</GENDER>
</PASSENGER>
</PASSENGERLIST>
<TOWNCODE>Alanya</TOWNCODE>
<CHECKINDATE>02.11.2015</CHECKINDATE>
<CHECKOUTDATE>10.11.2015</CHECKOUTDATE>
<HOTELCODE>BA</HOTELCODE>
<LANGUAGECODE>ENG</LANGUAGECODE>
</request>
</GetHotels>
</soap:Body>
</soap:Envelope>';
// connexion au web services
$wsdl="http://api.xxx.net/API/API.asmx?WSDL";
$user="xxx";
$pwd="xxx";
try{
$auth = array(
'login' => $user,
'password' => $pwd,
"authentication" => SOAP_AUTHENTICATION_BASIC,
"trace" => true,
"exceptions" => 0,
"cache_wsdl" => WSDL_CACHE_NONE
);
$sClient = new SoapClient($wsdl, $auth);
echo "<h2>TRY response</h2>";
// récupération de la réponse
$response = $sClient->GetHotels($data);
echo "<form><TEXTAREA readonly rows=20 cols=132>";
print_r($response);
echo "</TEXTAREA></form>";
}
// récupération de l'erreur
catch(SoapFault $e){
echo "<h2>CATCH response</h2>";
echo "<form><TEXTAREA readonly rows=20 cols=132>";
print_r($e);
echo "</TEXTAREA></form>";
}
?>
A voir également:
- Web services : Client SOAP PHP
- Web office - Guide
- Navigateur web - Guide
- Création site web - Guide
- K9 web protection - Télécharger - Contrôle parental
- Adresse web exemple - Guide
2 réponses
J'ai ceci qui semble fonctionner, mais je n'ai pas de user, pass donc je sais pas trop!
Il ce peux que les clé doivent être en minuscule!
ATTENTION LE CODE EST DIFFÉRENT DU CODE PRÉCÉDENT :
Voici la requête que mon code crée!
Je suis donc pas mal sur que ça fonctionne!
Bonne chance à toi et bonne fin de journée!
N!C£-L!F£!!!
Il ce peux que les clé doivent être en minuscule!
ATTENTION LE CODE EST DIFFÉRENT DU CODE PRÉCÉDENT :
error_reporting(E_ALL); ini_set("display_errors", 1); $wsdl = "http://api.suaytur.net/API/API.asmx?WSDL"; $user="allo"; $pwd="test"; $data = array( 'request' => array( 'AGENTINFO' => array('AGENT_ID' => $user, 'AGENT_PWD' => $pwd), 'PASSENGERLIST' => array( array( 'ID' => '1000', 'TITLE' => 'titre1', 'LASTNAME' => 'lastname1', 'FIRSTNAME' => 'firstname1', 'PASSTYPE' => 'ADT', 'DOB' => '12.02.1990', 'GENDER' => 'MR' ), array( 'ID' => '1001', 'TITLE' => 'titre2', 'LASTNAME' => 'lastname2', 'FIRSTNAME' => 'firstname2', 'PASSTYPE' => 'ADT', 'DOB' => '05.11.1980', 'GENDER' => 'MR' ) ), 'TOWNCODE' => 'Alanya', 'CHECKINDATE' => '02.11.2015', 'CHECKOUTDATE' => '10.11.2015', 'HOTELCODE' => 'BA', 'LANGUAGECODE' => 'ENG', ) ); try{ $sClient = new SoapClient($wsdl, array('trace' => 1)); $response = $sClient->GetHotels($data); echo "<pre>"; //AFFICHE LA RÉPONSE print_r($response); //AFFICHE LA REQUËTE XML echo "REQUEST:<br/>" . htmlentities(str_ireplace('><', ">\n<", $sClient->__getLastRequest())) . "<br/><br/><br/>"; //AFFICHE LA RÉPONSE XML echo "Response:<br/>" . htmlentities(str_ireplace('><', ">\n<", $sClient->__getLastResponse())) . "<br/>"; echo "</pre>"; } catch(SoapFault $fault){ echo $fault->faultstring; }
Voici la requête que mon code crée!
<?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://tempuri.org/"> <SOAP-ENV:Body> <ns1:GetHotels> <ns1:request> <ns1:AGENTINFO> <ns1:AGENT_ID>allo</ns1:AGENT_ID> <ns1:AGENT_PWD>test</ns1:AGENT_PWD> </ns1:AGENTINFO> <ns1:PASSENGERLIST> <ns1:PASSENGER> <ns1:ID>1000</ns1:ID> <ns1:TITLE>titre1</ns1:TITLE> <ns1:LASTNAME>lastname1</ns1:LASTNAME> <ns1:FIRSTNAME>firstname1</ns1:FIRSTNAME> <ns1:PASSTYPE>ADT</ns1:PASSTYPE> <ns1:DOB>12.02.1990</ns1:DOB> <ns1:GENDER>MR</ns1:GENDER> </ns1:PASSENGER> <ns1:PASSENGER> <ns1:ID>1001</ns1:ID> <ns1:TITLE>titre2</ns1:TITLE> <ns1:LASTNAME>lastname2</ns1:LASTNAME> <ns1:FIRSTNAME>firstname2</ns1:FIRSTNAME> <ns1:PASSTYPE>ADT</ns1:PASSTYPE> <ns1:DOB>05.11.1980</ns1:DOB> <ns1:GENDER>MR</ns1:GENDER> </ns1:PASSENGER> </ns1:PASSENGERLIST> <ns1:TOWNCODE>Alanya</ns1:TOWNCODE> <ns1:CHECKINDATE>02.11.2015</ns1:CHECKINDATE> <ns1:CHECKOUTDATE>10.11.2015</ns1:CHECKOUTDATE> <ns1:HOTELCODE>BA</ns1:HOTELCODE> <ns1:LANGUAGECODE>ENG</ns1:LANGUAGECODE> </ns1:request> </ns1:GetHotels> </SOAP-ENV:Body> </SOAP-ENV:Envelope>
Je suis donc pas mal sur que ça fonctionne!
Bonne chance à toi et bonne fin de journée!
N!C£-L!F£!!!
Maintenant, j'ai cette erreur :
La variable TOWNCODE devrait être Int pourtant elle est String sur la doc.
Merci !
Je reviens vers toi car après la récupération de la réponse SOAP, je pouvais pas configurer le parsing XML.
Voici un extrait de la response SOAP :
Je cherche à afficher le résultat de cette forme :
Code : BA
Pénalités d'annulation:
- Entre 02-10-2015 et 17-10-2015 : 171.6 €
- Entre 17-10-2015 et 25-10-2015 : 249.6 €
Code : SH
Pénalités d'annulation:
- Entre 02-10-2015 et 17-10-2015 : 277.2 €
Ce code ...
envoie cette erreur :
Merci !