Je suis face a un problème depuis quelques jours
J'utilise un web service je dois lui envoyer une requête soap afin que celui-ci me retourne un xml avec un lien de téléchargement d'un fichier pdf
Cependant avec le code que j'ai écrit l'url du lien de téléchargement s'affiche mais il se retrouve dans __getLastResponse, parmis des erreurs.
Si je supprime les lignes
Code : Tout sélectionner
} catch (SoapFault $exception) {
echo '<br>erreur, trace: '.$exception->getTraceAsString();
echo '<br>message: '. $exception->getMessage();
// Affiche ce qui est reçu..
echo $client->__getLastResponse();
die ();
}Le lien ne s'affiche plus
Et j'ai cette erreur qui s'affiche tout le temps
Code : Tout sélectionner
erreur, trace: #0 C:\wamp\www\etiquette2.php(41): SoapClient->__call('generateLabel', Array) #1 C:\wamp\www\etiquette2.php(41): SoapClient->generateLabel(Array) #2 {main}
message: looks like we got no XML document-code de mon client
Code : Tout sélectionner
<?php
include('dump.php');
// première étape : désactiver le cache lors de la phase de test
ini_set('soap.wsdl_cache_enabled', '0');
//On doit passer le fichier WSDL du Service en paramètre de l'objet SoapClient
$wsdlPath = 'https://ws.colissimo.fr/sls-ws/SlsServiceWS?wsdl';
try {
$client = new SoapClient($wsdlPath, array('trace' => true, 'exceptions' => true));
// bloc format attendu par generateLabel - PDF_A4_300dpi
$format = array('outputPrintingType' => 'PDF_A4_300dpi');
// Liste des sous-blocs attendues par Letter - Retour Colissimo - International CORI
$service = array('productCode' => 'CORE', 'depositDate' => '2015-12-23');
$parcel = array('weight' => '1.0' );
// bloc : coordonnées de l'expediteur
$addressexp = array('lastName' => 'nom', 'firstName' => 'prenom', 'line2' => ' 1 rue du bellay', 'countryCode' => 'FR', 'city' => 'ville', 'zipCode' => '95000');
// bloc : coordonnées du destinataire
$addressdest = array('companyName' => 'Compan', 'lastName' => 'nom', 'firstName' => 'prenom','line2' => '4 rue de la paix', 'countryCode' => 'FR', 'city' => 'Paris', 'zipCode' => '000');
$senders = array('address' => $addressexp);
$addressee = array('addresseeParcelRef' => '12345', 'codeBarForReference' => 'true', 'serviceInfo' => 'service info', 'address' => $addressdest);
$letter = array('service' => $service , 'parcel' => $parcel, 'sender' => $senders , 'addressee' => $addressee);
$pars = array('contractNumber' => 'XXXXX', 'password' => 'XXXXX', outputFormat' => $format, 'letter' => $letter);
$response = $client->generateLabel(array('generateLabelRequest' => $pars));
} catch (SoapFault $exception) {
echo '<br>erreur, trace: '.$exception->getTraceAsString();
echo '<br>message: '. $exception->getMessage();
// Affiche ce qui est reçu..
echo $client->__getLastResponse();
die ();
}
?>Alors j'ai essayé de passer du xml dans mon code :
Code : Tout sélectionner
<?php
//On passe le fichier WSDL du service en paramètre de l'objet SoapClient
$wsdlPath = 'https://ws.colissimo.fr/sls-ws/SlsServiceWS?wsdl';
try {
$client = new SoapClient($wsdlPath, array('trace' => true, 'exceptions' => true));
// bloc format attendu par generateLabel - PDF_A4_300dpi
// $format = array('outputPrintingType' => 'PDF_A4_300dpi');
$xml = new XmlWriter();
$xml->openMemory();
$xml->startDocument('1.0', 'UTF-8');
$xml->startElement('letter');
$xml->startElement('service');
$xml->writeElement('productCode', 'CORE');
$xml->writeElement('depositDate', '2015-12-23');
$xml->endElement();
$xml->startElement('parcel');
$xml->writeElement('weight', '1.0');
$xml->endElement();
$xml->startElement('sender');
$xml->writeElement('lastName', 'nom');
$xml->writeElement('firstName', 'prenom');
$xml->writeElement('line2', '1 rue du bellay');
$xml->writeElement('countryCode', 'FR');
$xml->writeElement('city', 'ville');
$xml->writeElement('zipCode', '95000');
$xml->endElement();
$xml->startElement('addressee');
$xml->writeElement('adresseeParcelRef', '12345');
$xml->writeElement('codeBarForReference', 'true');
$xml->writeElement('serviceInfo', 'courrier');
$xml->startElement('address');
$xml->writeElement('companyName', 'entreprise');
$xml->writeElement('lastName', 'dupont');
$xml->writeElement('firstName', 'jean');
$xml->writeElement('line2', ''4 rue de la paix');
$xml->writeElement('countryCode', 'FR');
$xml->writeElement('city', 'paris');
$xml->writeElement('zipCode', '75000');
$xml->endElement();
$xml->endElement();
$xml->endElement();
// bloc format attendu par generateLabel - PDF_A4_300dpi
$format = array('outputPrintingType' => 'PDF_A4_300dpi');
$letter = array('service' => $xml , 'parcel' => $xml, 'sender' => $xml , 'addressee' => $xml);
$pars = array('contractNumber' => 'XXXXX', 'password' => 'XXXXX', 'outputFormat' => $format, 'letter' => $letter);
$response = $client->generateLabel(array('generateLabelRequest' => $pars));
} catch (SoapFault $exception) {
echo '<br>erreur, trace: '.$exception->getTraceAsString();
echo '<br>message: '. $exception->getMessage();
// Affiche ce qui est reçu..
echo $client->__getLastResponse();
die ();
}
?>Et maintenant j'ai cette erreur :
message: SOAP-ERROR: Encoding: object has no 'productCode' property