Ajouter un header (Authorization et Content-Type) lors de l'appel d'un webservic
Résolu
mikis69
Messages postés
174
Statut
Membre
-
mikis69 Messages postés 174 Statut Membre -
mikis69 Messages postés 174 Statut Membre -
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
- Request header or cookie too large - Forum Webmastering
- Ajouter un compte whatsapp - Guide
2 réponses
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?