2011-01-04 23 views
2

Ich schreibe einen xmlrpc-Client, der einen in Ruby geschriebenen Server verwendet. Eine der Funktionen ist framework.busy?(). Lassen Sie mich die Ruby-Version anzeigen:mit Sonderzeichen in Funktionen: Python

server.call("framework.busy?") 

lässt So nehme ich eine Instanz der Klasse ServerProxy sagen Server erstellen. Also, während Python verwenden, um die Funktion anzurufen, beschäftigt? Ich brauche zu verwenden:

server.framework.busy?() 

Dies führt zu einem Fehler:

SyntaxError: invalid syntax 

Wie kann ich diese Funktion aufrufen? Oder lese ich den Ruby-Code falsch und implementiere ihn falsch.

Antwort

6

Ich habe noch nie in XML-Methoden mit einem Fragezeichen nennen (und ich vermute stark, könnte es tatsächlich außerhalb XML-RPC-Spezifikationen sein) dies, aber versuchen:

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

Ich habe keine Ahnung von das funktioniert, und Sie müssten ein Codebeispiel posten und einen funktionierenden Server haben, gegen den ich testen könnte. :)

In jedem Fall ist es wahrscheinlich keine gute Idee, ein Fragezeichen im Methodennamen zu haben, also wenn Sie den Ruby-Server zu etwas vernünftigeren ändern könnten, würde das hilfreich sein.

+3

Sie sind richtig, dass 'beschäftigt?' ist kein gültiger xml-rpc-Methodenname. Die Spezifikation (unter http://www.xmlrpc.com/spec) besagt: "Die muss ein Unterelement enthalten, eine Zeichenfolge, die den Namen der aufzurufenden Methode enthält. Die Zeichenfolge darf nur Bezeichnerzeichen enthalten. Groß- und Kleinbuchstaben AZ, die numerischen Zeichen, 0-9, Unterstrich, Punkt, Doppelpunkt und Schrägstrich. Es liegt ganz bei dem Server zu entscheiden, wie die Zeichen in einem methodName interpretiert werden. " – Duncan

+1

Das bedeutet, dass diese Antwort immer noch nützlich sein sollte, um Methoden aufzurufen, die einen Punkt, Doppelpunkt und Schrägstrich in ihren Namen haben. – jsbueno

+1

Ja, ich habe mit dem Programmierer gesprochen und er hat die Methodennamen im Server geändert. Danke für die Antworten. – satran

Verwandte Themen