2011-04-14 11 views
2

http://buildbot.twistedmatrix.com/builds/sphinx-html/291-15849/projects/web/howto/xmlrpc.htmlで最初の例を実行すると、クライアント側とサーバー側の両方で例外が発生します。私は、使用するサーバコードは、以下である:ひねりXML-RPCエラー

from twisted.web import xmlrpc, server 

class Example(xmlrpc.XMLRPC): 
    """An example object to be published.""" 

    def xmlrpc_echo(self, x): 
     """ 
     Return all passed args. 
     """ 
     return x 

    def xmlrpc_add(self, a, b): 
     """ 
     Return sum of arguments. 
     """ 
     return a + b 

    def xmlrpc_fault(self): 
     """ 
     Raise a Fault indicating that the procedure should not be used. 
     """ 
     raise xmlrpc.Fault(123, "The fault procedure is faulty.") 

if __name__ == '__main__': 
    from twisted.internet import reactor 
    r = Example() 
    reactor.listenTCP(7080, server.Site(r)) 
    reactor.run() 

クライアント側は以下である:

import xmlrpclib 

s = xmlrpclib.Server('http://localhost:7080/') 
print s.echo('Hello world') 

サーバー側の例外がある:

Traceback (most recent call last): 
    File "/usr/lib/python2.6/dist-packages/twisted/web/xmlrpc.py", line 150, in render_POST 
    d.addCallback(self._cbRender, request, responseFailed) 
    File "/usr/lib/python2.6/dist-packages/twisted/internet/defer.py", line 260, in addCallback 
    callbackKeywords=kw) 
    File "/usr/lib/python2.6/dist-packages/twisted/internet/defer.py", line 249, in addCallbacks 
    self._runCallbacks() 
    File "/usr/lib/python2.6/dist-packages/twisted/internet/defer.py", line 441, in _runCallbacks 
    self.result = callback(self.result, *args, **kw) 
--- <exception caught here> --- 
    File "/usr/lib/python2.6/dist-packages/twisted/web/xmlrpc.py", line 170, in _cbRender 
    allow_none=self.allowNone) 
exceptions.TypeError: dumps() got an unexpected keyword argument 'allow_none' 

クライアント側の例外がある:

Traceback (most recent call last): 
    File "./client.py", line 6, in <module> 
    print s.echo('Hello world') 
    File "/usr/local/lib/python2.6/dist-packages/xmlrpclib-1.0.1-py2.6.egg/xmlrpclib.py", line 986, in __call__ 
    return self.__send(self.__name, args) 
    File "/usr/local/lib/python2.6/dist-packages/xmlrpclib-1.0.1-py2.6.egg/xmlrpclib.py", line 1239, in __request 
    verbose=self.__verbose 
    File "/usr/local/lib/python2.6/dist-packages/xmlrpclib-1.0.1-py2.6.egg/xmlrpclib.py", line 1037, in request 
    return self._parse_response(h.getfile(), sock) 
    File "/usr/local/lib/python2.6/dist-packages/xmlrpclib-1.0.1-py2.6.egg/xmlrpclib.py", line 1136, in _parse_response 
    p.close() 
    File "/usr/local/lib/python2.6/dist-packages/xmlrpclib-1.0.1-py2.6.egg/xmlrpclib.py", line 508, in close 
    self._parser.Parse("", 1) # end of data 
xml.parsers.expat.ExpatError: no element found: line 1, column 0 

答えて

2

あなたに古いバージョンがあるようですxmlrpclibのシオン?

使用しているPythonのバージョンは何ですか? xmlrpcサーバーが使用しているxmlrpclibはどこから来ていますか、どのバージョンですか?

$ python -v 
>>> import xmlrpclib 
# /usr/lib/python2.6/xmlrpclib.pyc matches /usr/lib/python2.6/xmlrpclib.py 
>>> xmlrpclib.__version__ 
'1.0.1' 
>>> xmlrpclib.dumps((None,), allow_none=True) 
'<params>\n<param>\n<value><nil/></value></param>\n</params>\n 

これは私のために働きます。おそらくあなたは何とか古いバージョンのxmlrpclibを使用していますか?

+0

私はあなたと同じバージョン1.0.1を使用しています。私は昨日それをeasy_installed。 xmlrpclib.dumps((None、)、allow_none = True)を実行すると、TypeErrorが発生します:dumps()は予期しないキーワード引数 'allow_none'を受け取ります – user176121

+0

xmlrpclib.pyをserver.pyにコピーして実行すると私のxmlrpclibに何か間違ってはいけないように動作します。私はpycが正しいことを確認するためにxmlrpclib.pycを再コンパイルし、私はまだ例外を取得します。 – user176121

+0

xmlrpclibにはPython標準が付属しています(2.2以降)。サイトパッケージにあるものをアンインストールし、上記のように/usr/lib/python2.6/xmlrpclib.pycにあるものを使用してください。インポート時にpython -vの冗長出力を見ると、allow_noneキーワード引数がない、異なるバージョンのダンプを持つsite-packagesのパッケージを使用していることがわかります。 – jsw

関連する問題