我无法在xmlrpclib.ServerProxy()上获得方法列表。我尝试过使用dir();但是,解释器不断返回错误。
这就是我的尝试:
>>>s = xmlrpclib.ServerProxy("http://192.168.1.72:8888")
>>>dir(s)
我收到了这个错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/xmlrpclib.py", line 1224, in __call__
return self.__send(self.__name, args)
File "/usr/lib/python2.7/xmlrpclib.py", line 1578, in __request
verbose=self.__verbose
File "/usr/lib/python2.7/xmlrpclib.py", line 1264, in request
return self.single_request(host, handler, request_body, verbose)
File "/usr/lib/python2.7/xmlrpclib.py", line 1297, in single_request
return self.parse_response(response)
File "/usr/lib/python2.7/xmlrpclib.py", line 1473, in parse_response
return u.close()
File "/usr/lib/python2.7/xmlrpclib.py", line 793, in close
raise Fault(**self._stack[0])
xmlrpclib.Fault: <Fault 1: '<type \'exceptions.Exception\'>:method "__dir__" is not supported'>
不支持Dir(),如何获取方法列表?
答案 0 :(得分:9)
我可能错了,但我怀疑你的真正之后是远程系统支持的方法,它将被代理(按需)到本地对象。
如果服务器支持XML introspection API,您可以使用ServerProxy.system.listMethods()
方法...
>>> s = xmlrpclib.ServerProxy("http://192.168.1.72:8888")
>>> s.system.listMethods()
答案 1 :(得分:1)
>>> import xmlrpclib
>>> dir (xmlrpclib.ServerProxy)
['_ServerProxy__close', '_ServerProxy__request', '__call__', '__doc__', '__getattr__', '__init__', '__module__', '__repr__', '__str__']
这就是你要追求的?
根据docs,当您传递dir
对象的实例时,它会在该对象中查找名为__dir__
的方法,并返回在该对象上调用该方法的结果。由于ServerProxy
未实现__dir__
,因此您必须在class
对象上调用它以获取其属性列表。