2011-01-04 6 views
2

J'écris un client xmlrpc qui utilise un serveur écrit en ruby. L'une des fonctions est framework.busy?(). Permettez-moi de montrer la version rubis:en utilisant des caractères spéciaux dans les fonctions: Python

server.call("framework.busy?") 

permet donc supposer que je crée une instance de la classe ServerProxy dire serveur. Donc, en utilisant python pour appeler la fonction occupée? Je dois utiliser:

server.framework.busy?() 

Cela conduit à une erreur:

SyntaxError: invalid syntax 

Comment puis-je appeler cette fonction? Ou est-ce que je lis mal le code de rubis et l'applique mal.

Répondre

6

Je ne l'ai jamais dû appeler des méthodes XML avec un point d'interrogation (et je soupçonne fortement qu'il pourrait en fait être en dehors de spécifications XML-RPC), mais essayez ceci:

server.framework.getattr('busy?')() 

Je ne sais pas de cela fonctionne, et vous auriez besoin de poster un exemple de code et avoir un serveur de travail que je pourrais tester. :)

Dans tous les cas, ce n'est probablement pas une bonne idée d'avoir un point d'interrogation dans le nom de la méthode, donc si vous pouvez modifier le serveur Ruby à quelque chose de plus sain, ce serait utile.

+3

Vous avez raison de dire que 'occupé?' n'est pas un nom de méthode xml-rpc valide. La spécification (sur http://www.xmlrpc.com/spec) indique: "Le doit contenir un sous-élément , une chaîne contenant le nom de la méthode à appeler La chaîne ne peut contenir que des caractères d'identification, AZ majuscules et minuscules, les caractères numériques, 0-9, trait de soulignement, point, deux points et barre oblique Il appartient entièrement au serveur de décider comment interpréter les caractères dans un nomMéthode. " – Duncan

+1

Ce qui signifie que cette réponse devrait toujours être utile pour appeler des méthodes qui auraient des points, des deux-points et des barres obliques dans leurs noms. – jsbueno

+1

Oui j'ai parlé au programmeur et il a changé les noms de méthode dans le serveur. Merci pour les réponses. – satran

Questions connexes