Sterk Posted August 17, 2019 Share Posted August 17, 2019 (edited) Bonjour à tous Je découvre les webservice avec Prestashop et j'ai un souci, j'obtient toujours un code 302 lorsque que je tente de mettre à jour une image d'un produit int(302) string(276) "HTTP/1.1 100 Continue HTTP/1.1 302 Found Date: Sat, 17 Aug 2019 13:40:13 GMT Server: Apache X-Powered-By: PHP/7.0 Location: http://myshop.xyz/shop/index.php?url=images%2Fproducts%2F104954%2F Transfer-Encoding: chunked Content-Type: text/html; charset=utf-8 " J'ai bien généré ma clé api dans l'interface admin Voici mon code : $url = 'https://www.myshop/shop'; $key = 'XYZXYZXYZXYZXYZXYZXYZXYZ'; $psProductId = 104954; $urlImage = $url.'/api/images/products/'.$psProductId.'/'; $image_path = '/home/web/www/shop/img/p/2/6/0/1/2601-large_default.jpg'; $image_mime = 'image/jpg'; $args['image'] = new CurlFile($image_path, $image_mime); $ch = curl_init(); // curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type:multipart/form-data','Expect:')); curl_setopt($ch, CURLOPT_HEADER, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLINFO_HEADER_OUT, 1); curl_setopt($ch, CURLOPT_URL, $urlImage); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_USERPWD, $key.':'); //curl_setopt($ch, CURLOPT_POSTFIELDS, $args); //curl_setopt($ch, CURLOPT_POSTFIELDS, array('image' => '@'.$image_path)); //test 2 curl_setopt($ch, CURLOPT_POSTFIELDS, array('image'=>"@".$image_path.";type=image/jpeg")); //test 3 $result = curl_exec($ch); $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); //echo curl_error($ch); var_dump($httpCode); var_dump($result); curl_close($ch); if (200 == $httpCode) { echo 'Product image was successfully created.'; } Je possède Prestashop 1.7.6 et suis hébergé chez OVH avec du php 5.6 Merci pour tout conseil Edited August 17, 2019 by Sterk (see edit history) Link to comment Share on other sites More sharing options...
Eolia Posted August 17, 2019 Share Posted August 17, 2019 le site est en https ? Link to comment Share on other sites More sharing options...
Sterk Posted August 17, 2019 Author Share Posted August 17, 2019 Bonjour Eolia, Oui, le site est bien https Merci pour ton soutien ! Link to comment Share on other sites More sharing options...
Eolia Posted August 17, 2019 Share Posted August 17, 2019 donc en ayant remplacé $url = 'http://www.myshop/shop'; par $url = 'https://www.myshop/shop'; Vous ne devez plus avoir de redirection Link to comment Share on other sites More sharing options...
Sterk Posted August 17, 2019 Author Share Posted August 17, 2019 non, j'ai toujours le code 302 malgré la correction :$url = 'https://www.myshop/shop'; ps: Je pense pas que ce soit lié mais je vois dans l'interface admin un warning sur la page des paramètres webservice : Vous devez activer le module Apache 'mod_auth_basic' afin de permettre l'authentification au service web. Pourtant la page arrive à s'authentifier, car l'url https://myshop/shop/api/images/products/104954 m'affiche bien les info de mon produit. Link to comment Share on other sites More sharing options...
Sterk Posted August 17, 2019 Author Share Posted August 17, 2019 Peut être que cela peut t'aider à diagnostiquer mais j'ai du réaliser une redirection pour que l'authentification sur ovh fonctionne, J'ai modifié dispatcher.php et ajouté un fichier htaccess dans le dossier webservice : voici le lien de la doc https://www.taboutiqueweb.fr/blog-taboutiqueweb/authentification-webservice-api-prestashop-impossible-sur-ovh-b17.html Link to comment Share on other sites More sharing options...
Eolia Posted August 17, 2019 Share Posted August 17, 2019 code http 100 la taille indiquée dans votre header n'est pas définie donc le serveur prend 1024. Or votre image est plus grosse que ça. Il manque le paramètre CURLOPT_INFILESIZE dans votre curl. Autrement utilisez cette astuce (suite à la perte du POST en GET) https://blog.eexit.net/curl-forward-post-over-http-redirections/ Link to comment Share on other sites More sharing options...
Sterk Posted August 17, 2019 Author Share Posted August 17, 2019 J'ai finalement résolu le souci, en fait chez OVH il faut impérativement retirier les "www" de l'url $url = 'https://myshop/shop'; Merci Eolia pour ton aide. cf : Link to comment Share on other sites More sharing options...
Eolia Posted August 17, 2019 Share Posted August 17, 2019 Euh... ca n'a rien à voir avec OVH ça^^ Si vous mettez les www mais que votre SHOP_URL n'en n'a pas c'est Prestashop qui fait la 302, pas OVH Link to comment Share on other sites More sharing options...
Sterk Posted August 17, 2019 Author Share Posted August 17, 2019 oui tu as raison.... Enfin, j’arrive à mettre à jour mon image, sauf qu'il rajouter l'image au lieu de remplacer celle existante Link to comment Share on other sites More sharing options...
Eolia Posted August 17, 2019 Share Posted August 17, 2019 ajoutez: ?ps_method=PUT à la fin de votre url api Link to comment Share on other sites More sharing options...
Sterk Posted August 18, 2019 Author Share Posted August 18, 2019 ça marche pas pour moi..... ?ps_method=PUT me renvoi une erreur 500 $urlImage = $url.'/api/images/products/'.$psProductId.'/?ps_method=PUT'; 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