gandalf76fr Posted February 1, 2012 Share Posted February 1, 2012 Bonjour, Je travaille actuellement sur un projet d’interface vers prestashop qui utilisera le webservice. Certains d’entre vous connaissent-ils ? La doc n’est franchement pas très complète. Car par exemple pour la création d’un produit je cale sur un problème : J’arrive à créer le produit sans aucun soucis si j’utilise du texte simple. Par contre impossible de le créer avec du texte contenant des balises html alors que prestashop gère les balises html dans les fiches produits. Il semble bloquer sur les <>. J’ai bien tenter à coup de htmlentities, htmlspecialchars, utf8decode/encode, remplacer part des >……….. mais rien n’y fait. Je finis toujours avec : Autre erreur : This call to PrestaShop Web Services failed and returned an HTTP status of 500. That means: Internal Server Error. Code : 0 Array ( [0] => Array ( [file] => /var/www/clients/client2/web52/web/include/PSWebServiceLibrary.php [line] => 222 [function] => checkStatusCode [class] => PrestaShopWebservice [type] => -> [args] => Array ( [0] => 500 ) ) [1] => Array ( [file] => /var/www/clients/client2/web52/web/test4.php [line] => 35 [function] => add [class] => PrestaShopWebservice [type] => -> [args] => Array ( [0] => Array ( [resource] => products [postXml] => 1 1 test53dfgb2578 test547gfrdrt24fgb52 test avec <> 6 02 ) ) ) ) Trace : 1 /var/www/clients/client2/web52/web/include/PSWebServiceLibrary.php 92 La partie du xml envoyé concernée : <description format="isString"><language id="4" xlink:href="http://presta5.xxx.net/api/languages/4" format="isUnsignedId">test avec <></language></description> Le xml retourné : <errors> <error> <message><![CDATA[internal error. To see this error please display the PHP errors.]]></message> </error> Log php : Rien. J'ai bien vu un bug report sur le sujet (http://forge.prestas...owse/PSCFI-4306)avec une solution proposée, mais rien à faire toujours la même erreur : Ce qui est tout de même étrange c'est que par exemple avec (extraits de code) : $description="<![CDATA[<h1>Tiger</h1>]]>"; (j'ai tester avec et sans les balises du CDATA) $resources_product->description->language[0][0]= html_entity_decode($description,ENT_NOQUOTES,'UTF-8'); Si j'affiche le xml généré : echo $resources_product->asXML(); j'ai bien : 1 1 test53dfgb2578 test547gfrdrt24fgb52 <![CDATA[<h1>Tiger</h1>]]> 2 02 Donc un affichage correcte de la section CDATA. Alors que selon la lib le XML envoyé est : <description format="isString"><language id="4" xlink:href="http://xxx.xxx.com/api/languages/4" format="isUnsignedId"><![CDATA[<h1>Tiger</h1>]]></language></description> Ce qui la ne colle pas du tout. Pareil avec et sans le html_entity_decode ou autre. Petite précisions : J'ai tester sur différentes versions de prestachop, de la 1.4.3 (que je souhaiterai utiliser pour une raison de compatibilité de module) à la 1.5 (sur laquelle je passerais le projet une fois en stable) Désolé pour ce long post mais je souhaitais être le plus clair et complet possible Merci d’avance de votre aide. P.S : je n’en suis pas encore la, mais je n’ai rien trouver concernant l’ajout d’images aux fiches produit via le webservice. Petit exemple de code : require_once($_SERVER["DOCUMENT_ROOT"].'/include/PSWebServiceLibrary.php'); require_once($_SERVER["DOCUMENT_ROOT"].'/include/fonctions.php'); define('DEBUG', true); // Debug mode define('PS_SHOP_PATH', 'http://test.xxx.com/'); // Root path of your PrestaShop store define('PS_WS_AUTH_KEY', '***************************'); // Auth key (Get it in your Back Office) $webService = new PrestaShopWebservice(PS_SHOP_PATH, PS_WS_AUTH_KEY, DEBUG); $description='test avec <>'; $xml_product = $webService->get(array('resource' => 'products?schema=synopsis')); $resources_product = $xml_product->children()->children(); // champs requis $resources_product->quantity = 0; $resources_product->active = 1; $resources_product->price = 1; $resources_product->out_of_stock = 2; $resources_product->name->language[0][0] = 'test547gfrdrt24fgb52'; $resources_product->link_rewrite->language[0][0] = 'test53dfgb2578'; $resources_product->description->language[0][0] = $description; //var_dump($resources_product); // par exemple pour vider les associations aux categories unset($resources_product->associations->categories->category); // associer a une categorie (id = 1) $resources_product->associations->categories->addChild('category')->addChild('id', 6); echo $xml_product->asXML(); try { $xml_product = $webService->add(array('resource' => 'products', 'postXml' => $xml_product->asXML())); } catch(PrestaShopWebserviceException $ex) { $trace = $ex->getTrace(); $errorCode = $trace[0]['args'][0]; if ($errorCode==401) { echo 'Mauvaise cle authentification curl'; } else { echo 'Autre erreur : <br />'; echo $ex->getMessage().'<br />'; echo 'Code : '.$ex->getCode().'<br />'; echo 'Trace : '.print_r($ex->getTrace()).'<br />'; echo $ex->getFile().'<br />'; echo $ex->getLine().'<br />'; } } Link to comment Share on other sites More sharing options...
gandalf76fr Posted February 1, 2012 Author Share Posted February 1, 2012 Je précise que le même code avec un texte simple fonctionne très bien et donne le résultat escompté : $resources_product->description->language[0][0] = html_entity_decode('test',ENT_NOQUOTES,'UTF-8'); Link to comment Share on other sites More sharing options...
gandalf76fr Posted February 1, 2012 Author Share Posted February 1, 2012 Bonne nouvelle !!!! Solution trouvée : Le webservice prestashop utilise des simplexmlelements pour lesquels selon mes lecture du jours la création de cdata n'existe tout bonne pas pas nativement. Mais en modifiant mon code ainsi : $description='<b>ceci est un nouveau test en gras</b>'; Et pour ajouter la description : $node= dom_import_simplexml($resources_product->description->language[0][0]); $no = $node->ownerDocument; $node->appendChild($no->createCDATASection($description)); A la place de : $resources_product->description->language[0][0] = $description; Ca fonctionne très bien. Bon il y a peut être plus propre mais c'est déja un pas en avant. Un bug à ce sujet est déjà signalé dans le forge de prestashop. Bon il me reste à traiter du probleme de l'ajout d'image existant mais absolument pas documenté. Je reste à l'écoute de vos suggestions. Cordialement. Link to comment Share on other sites More sharing options...
gbert1 Posted February 13, 2012 Share Posted February 13, 2012 @gandal76fr : votre solution marche nickel, merci Toujours à propos des webservices, j'avais trouvé un bug dans la création de tags qui a été résolue lors du Prestashop Camp de décembre par un des développeurs (très sympa d'ailleurs). Je pense que depuis le patch qu'il avait créé a été intégré dans les dernières versions. Link to comment Share on other sites More sharing options...
SourourDev Posted February 20, 2012 Share Posted February 20, 2012 salut, je suis débutante .je travaille sur PrestaShop .J'ai créé un web service avec son clé .Mon problème que j'arrive pas à accéder à ce web service !!!! J'ai suivi ce tutoriel :http://forge.prestashop.com:8081/download/attachments/327702/CRUD+Tutorial+FR.pdf?version=1&modificationDate=1301486808000 Je me suis bloqué au niveau de :Tester l'accès au service web avec le navigateur .Je travaille en localhost Mercii de m'aider . Link to comment Share on other sites More sharing options...
SourourDev Posted February 21, 2012 Share Posted February 21, 2012 J'ai trouvé la solution Il faut passé par Localhost/prestashop/webservice/dispatcher.php pour entrer le clé Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now