Ajouter un header (Authorization et Content-Type) lors de l'appel d'un webservic
Résolu
mikis69
Messages postés
168
Date d'inscription
Statut
Membre
Dernière intervention
-
mikis69 Messages postés 168 Date d'inscription Statut Membre Dernière intervention -
mikis69 Messages postés 168 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous et à toutes,
Je rencontre un petit problème avec les webservices.. Pour vous mettre dans le contexte, j'ai un site e-commerce et j'aimerai modifier le statut de ma commande (chez BPOST ou mondialRelay).
Mondial Relay a fourni dans sa documentation, un exemple d'appel à l'un de ses webservices. Bpost non. Le soucis est que je n'arrive pas à adapter l'exemple de MondialRelay pour le faire fonctionner chez Bpost.
J'utilise la librairie nusoap.php
Voici les consignes que je retrouve dans la documentation de chez Bpost + un exemple de l'xml request attendu :
Je connais mon accountID et ma pass-phrase. Je sais également transformer cela en base 64.
Voici à présent, l'exemple de chez Mondial Relay que je n'arrive pas à adapter pour Bpost :
Ce sont les seuls infos dont je dispose..
En espérant que quelqu'un m'aide, je vous souhaite une excellente journée,
Mikis
Je rencontre un petit problème avec les webservices.. Pour vous mettre dans le contexte, j'ai un site e-commerce et j'aimerai modifier le statut de ma commande (chez BPOST ou mondialRelay).
Mondial Relay a fourni dans sa documentation, un exemple d'appel à l'un de ses webservices. Bpost non. Le soucis est que je n'arrive pas à adapter l'exemple de MondialRelay pour le faire fonctionner chez Bpost.
J'utilise la librairie nusoap.php
Voici les consignes que je retrouve dans la documentation de chez Bpost + un exemple de l'xml request attendu :
Type of request: POST URL PROD: https://api.bpost.be/services/shm/{accountID}/orders/{orderReference} Headers: Authorization: Basic AccountID:pass-phrase (base64) Content-Type: application/vnd.bpost.shm-orderUpdate-v3+XML
<?xml version="1.0"?> <orderUpdate xmlns="http://schema.post.be/shm/deepintegration/v3/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://schema.post.be/shm/deepintegration/v3/ "> <status>OPEN</status> </orderUpdate>
Je connais mon accountID et ma pass-phrase. Je sais également transformer cela en base 64.
Voici à présent, l'exemple de chez Mondial Relay que je n'arrive pas à adapter pour Bpost :
$client = new nusoap_client("http://api.mondialrelay.com/Web_Services.asmx?WSDL", true); $client->soap_defencoding = 'utf-8'; $params = array( ... => ..., ); $result = $client->call('WSI4_PointRelais_Recherche', $params, 'http://api.mondialrelay.com/', 'http://api.mondialrelay.com/WSI4_PointRelais_Recherche');
Ce sont les seuls infos dont je dispose..
En espérant que quelqu'un m'aide, je vous souhaite une excellente journée,
Mikis
A voir également:
- Ajouter un header (Authorization et Content-Type) lors de l'appel d'un webservic
- Nommez une application d'appel vidéo ou de visioconférence - Guide
- Appel privé - Guide
- Impossible d'ajouter un ami sur facebook - Guide
- Ajouter un compte whatsapp - Guide
- Request header or cookie too large - Forum Webmastering
2 réponses
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour, tu dois commencer par trouver le wsdl de bpost. n'as-tu vraiment aucune autre information?
Ou alors, je vois trop loin et je n'ai qu'à effectuer une requête HTTP en mode POST ?
J'ai finalement réussi en utilisant les requêtes HTTP plutôt que l'appel Webservice que j'ai mentionné plus haut.
// Set status to open ! $document = new \DOMDocument('1.0', 'utf-8'); $document->preserveWhiteSpace = false; $document->formatOutput = true; $order_update = $document->createElement('orderUpdate'); $order_update->setAttribute('xmlns', 'http://schema.post.be/shm/deepintegration/v3/'); $order_update->setAttribute('xmlns:xsi', '"http://www.w3.org/2001/XMLSchema-instance'); $order_update->appendChild( $document->createElement('status', $status) // Le status voulu : OPEN, CANCELLED, ... ); $document->appendChild($order_update); $headers = array( 'Content-Type: application/vnd.bpost.shm-orderUpdate-v3+XML', 'Authorization: Basic ' . base64_encode('ACCOUNTID:PASSPHRASE'), ); // set options $options = array(); $options[CURLOPT_URL] = 'https://api.bpost.be/services/shm/ACCOUNTID/orders/ORDERID'; $options[CURLOPT_RETURNTRANSFER] = true; $options[CURLOPT_HTTP_VERSION] = CURL_HTTP_VERSION_1_1; $options[CURLOPT_HTTPHEADER] = $headers; $options[CURLOPT_SSL_VERIFYPEER] = false; $options[CURLOPT_POST] = true; $options[CURLOPT_POSTFIELDS] = $document->saveXML(); // init $curl = curl_init(); // set options curl_setopt_array($curl, $options); // execute $response = curl_exec($curl); var_dump($response);
C'est possible qu'il n'y en ai pas ? Ou alors la partie commune à chaque opération 'https://api.bpost.be/services/shm' et rajouter '?wsdl' à la fin ?
bizarre que tu n'aies pas reçu l'information de bpost: travailles-tu vraiment avec eux?