Jump to content

Recommended Posts

Bonsoir,

Je suis actuellement sur un projet qui se base intégralement sur le web services de la dernières version de PS (1.4)
Cependant la version 1.4 (stable) contient de nombreux bug.

Le premier bug est causé par la ligne 68 du fichier dispatcher.php
$result = $class_name::getInstance()->fetch($key, $method, $_GET['url'], $params, $bad_class_name, $input_xml);
qui lève une erreur, en effet il n'arrive pas à interpréter $class_name que j'ai du remplacer par WebserviceRequest pour avoir
$result = WebserviceRequest::getInstance()->fetch($key, $method, $_GET['url'], $params, $bad_class_name, $input_xml);

ce bug n'est pas vraiment gênant. Le plus embêtant est lorsque j'attaque l'URL de l'api permettant d'avoir le synopsis d'un item. par exemple : /prestashop1.4/api/categories?schema=synopsis

Ce qui retourne :



Internal error
Internal error
Internal error
Internal error


Donc il est impossible de connaitre les champs nécessaire, ni la structure nu d'un item.

L'internal erreur n'est pas sur tous les items puisque /prestashop1.4/api/customers?schema=synopsis fonctionne très bien.

Y a t-il une manipulation à faire, ou un fix est il prévus ?
Très bonne soirée et merci d'avance

Mikael

Link to comment
Share on other sites

Bonjour,

Pour le premier point, c'est malheureusement un fix que nous avons fait dans l'urgence le jour de la release : cela fonctionne parfaitement en php 5.3 mais pas en 5.2. Ce point a été corrigé le lendemain de la release (version SVN). Et c'est depuis parfaitement fonctionnel avec php 5.2.

Voici un bon tutoriel pour les interessés : http://wixiweb.fr/articles/utilisation-webservices-prestashop-1.4/

Pour le second point c'est un comportement normal, bien que pas évident :

Pour voir les erreurs en détail, il vous faut configurer la variable d'env. PHP 'display_error' à 'on' (voir premières lignes de config/config.inc.php). C'est une sécurité pour l'ensemble de vos boutiques.

Lucas.

Link to comment
Share on other sites

Merci de la réponse, Cependant meme en passant dispya_error a "on", j'obtiens :



[php Notice #8] Undefined index:  fields (/Applications/MAMP/htdocs/prestashop1.4/classes/WebserviceRequest.php, line 1308)

[php Warning #2] Invalid argument supplied for foreach() (/Applications/MAMP/htdocs/prestashop1.4/classes/WebserviceRequest.php, line 1308)
[php Notice #8] Undefined index:  fields (/Applications/MAMP/htdocs/prestashop1.4/classes/WebserviceRequest.php, line 1308)
[php Warning #2] Invalid argument supplied for foreach() (/Applications/MAMP/htdocs/prestashop1.4/classes/WebserviceRequest.php, line 1308)




Après je ne sais pas si le fixe qu'il y a eu entre temps à corrigé ces problèmes je vérifie ça et vous tiens au courant
Merci Beaucoup

Mikael

Link to comment
Share on other sites

Dans WebservicesRequest.php à la ligne il faut remplacer la ligne
foreach ($this->_resourceConfiguration['associations'][$assocName]['fields'] as $fieldName => $fieldAttributes)
par
foreach ($this->_resourceConfiguration['associations'] as $fieldName => $fieldAttributes)
en effet $this->_resourceConfiguration['associations'][$assocName]
contient :

Array
(
   [getter] => getProductsWs
   [resource] => product
   [setter] => setWsProducts
)


le champs fields n'existe donc pas

Link to comment
Share on other sites

Encore une petit bug, toujours dans le fichier WebservicesRequest.php à la ligne 1218

if (array_key_exists('xlink_resource', $field) && $this->_schemaToDisplay != 'blank'){
   if (!is_array($field['xlink_resource']))
       $ret .= ' xlink:href="'.$this->_wsUrl.$field['xlink_resource'].'/'.($this->_schemaToDisplay != 'synopsis' ? $object->$key : '').'"';
   else
       $ret .= ' xlink:href="'.$this->_wsUrl.$field['xlink_resource']['resourceName'].'/'.(isset($field['xlink_resource']['subResourceName']) ? $field['xlink_resource']['subResourceName'].'/'.$object->id.'/' : '').($this->_schemaToDisplay != 'synopsis' ? $object->$key : '').'"';
}


Ce bout de code retourne une erreur :

 Trying to get property of non-object
Ceci peut s'expliquer en regardant la déclaration de la function

[code]private function getXmlFromEntity($object = null)[/code]



Nous faisons donc un appel à des variables de classe : $object->id et $object->$key alors que l'objet n'existe pas (null), j'ai modifier le code pour que ça fonctionne mais c'est du bricolage

[code]
if (array_key_exists('xlink_resource', $field) && $this->_schemaToDisplay != 'blank'){
if (!is_array($field['xlink_resource']))
$ret .= ' xlink:href="'.$this->_wsUrl.$field['xlink_resource'].'/'.($this->_schemaToDisplay != 'synopsis' ? $object->$key : '').'"';
else{
/*
* Ajout d'une condition, on vérifie que l'objet $objet n'est pas vide, si c'est le cas l'attribut xlink:href
* prendra alors comme valeurs, l'URL de base pointant sur l'api
*/
if($object == null)
$ret .= ' xlink:href="'.$this->_wsUrl.$field['xlink_resource']['resourceName'].'/'.
(isset($field['xlink_resource']['subResourceName']) ? $field['xlink_resource']['subResourceName'].'/' : '').'"';
else
$ret .= ' xlink:href="'.$this->_wsUrl.$field['xlink_resource']['resourceName'].'/'.
(isset($field['xlink_resource']['subResourceName']) ? $field['xlink_resource']
['subResourceName'].'/'.$object->id.'/' : '').($this->_schemaToDisplay != 'synopsis' ? $object->$key :
'').'"';
}
}
[/code]

Link to comment
Share on other sites

  • 2 weeks later...

j'ai appliqué tous les correctifs énoncés dans ce thread
néanmoins j'ai toujours




Internal error



pour info j'ai essayé sur une version de prestashop téléchargée et installé en tout début d'après midi

Link to comment
Share on other sites

Bonsoir
Pourrais tu passé le display_error a "On" dans le fichier confi/confi.inc.php de prestashop et me retourner l'erreur. Un membre de mon équipe à poster un message dans le forum anglais

Je t'invite donc à faire également les modifications suivantes (Cf : voir lien)
http://www.prestashop.com/forums/viewthread/101216/development/webservice

Bonne soirée
Mikael

PS : N’hésite pas a me faire parvenir l'erreur même par PM, je verais si je peux t'aider

Link to comment
Share on other sites

  • 2 weeks later...

bonjour,
le problème est que lorsque j'accède à /api/ il me demande ma clef d'authentification: ok. je la rentre. il me remet la boite pour m'identifier. je remet la clef dans le champ login. puis encore puis encore puis j'arrête j'en ai marre
le message Internal server error devient alors



Authentication key is empty



----------------------

Version de Prestashop: 1.4.0.17

Informations sur votre serveur: Linux #1 SMP Wed Mar 16 20:29:36 UTC 2011 i686

Version du logiciel serveur: Apache

Version de PHP: 5.2.4-2ubuntu5.14

Version de MySQL: 5.0.51a-3ubuntu5.8-log

Link to comment
Share on other sites

Bonjour à tous,

Je m'introduit dans cette discussion afin de vous signaler un petit rapport de bug qui traite d'un problème semblable à celui de ce thread. Pour le consulter, suivez ce lien : http://forge.prestashop.com/browse/PSCFI-1392

J'ai fais quelques recherches sur ces messages d'erreur qui apparaissent lorsque l'on demande les schemas "synopsis" et il semble qu'un bug se soit glisser dans la gestion des relations entre objets au niveau des web services.

Je vous invite donc à consulter ce rapport et éventuellement les commentaires que j'ai posté ainsi que les petits correctifs.

Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...