2011-01-17 4 views
1

J'essaie actuellement de créer une interface de gestion basée sur le Web pour un groupe de serveurs Linux exécutant un service spécial. L'idée étant que le site de gestion peut RPC les clusters pour recueillir des informations, effectuer des tâches de configuration, etc.XMLRPC - Serveur Python, client PHP. Pas de consistance?

J'ai un script XMLRPC Python Server opérationnel et j'ai écrit un client XMLRPC basique en PHP. Tout cela fonctionne, mais j'ai de sérieux problèmes pour obtenir des réponses cohérentes à partir des appels de méthodes - Parfois, j'obtiens un tableau XML à la profondeur en fonction de la verbosité de la sortie de la commande, parfois c'est une structure XML , et parfois c'est juste une ancienne valeur. Ensuite, j'ai des erreurs à traiter - Il semble que le standard XMLRPC a une structure Fault avec les valeurs 'faultCode' et 'faultString' avec lesquelles il répond, ce qui est super car c'est bien rangé et je peux extraire ces données via la clé nommée le XML. Mais vous obtenez seulement cette structure si l'erreur provient du shell lui-même (par exemple si la commande appelée a un mauvais argument), alors qu'une erreur venant de la commande doit être juste une réponse XML normale.

Comment puis-je écrire un service web robuste autour de ce qui semble être des réponses aussi variées du serveur XMLRPC? Ce que je voudrais vraiment faire, c'est avoir exactement la même réponse de struct XML à chaque fois avec les mêmes clés (returnCode (0 = succès,> 1 = erreur), returnValue/s).

Merci pour tout conseil.

+1

http://amp-protocol.net/ – nosklo

+0

Ah merci. Ce protocole semble assez bon, je vais enquêter plus loin. –

Répondre

1

Peut-être commencer par un client XML/RPC existant et laisser le client faire le travail du protocole. Il y a Zend\XmlRpc dans Zend Framework mais aussi des clients autonomes comme fxmlrpc.

Questions connexes