我正在尝试在 Python 中使用带有 xmlrpclib 的自定义传输类,但是当我指定自定义传输时,我确实在第一次调用时遇到异常:
File "/Users/sorins/dev/py/confluence/confluence/confluence.py", line 208, in __init__
self._token = self._server.confluence1.login(username, password)
File "/usr/local/Cellar/python/2.7.3/Frameworks/Python.framework/Versions/2.7/lib/python2.7/xmlrpclib.py", line 1224, in __call__
return self.__send(self.__name, args)
File "/usr/local/Cellar/python/2.7.3/Frameworks/Python.framework/Versions/2.7/lib/python2.7/xmlrpclib.py", line 1578, in __request
verbose=self.__verbose
TypeError: unbound method request() must be called with SafeTransport instance as first argument (got str instance instead)
示例代码:
#!/usr/bin/env python
from xmlrpclib import Transport
class MyTransport(Transport):
pass
server = xmlrpclib.ServerProxy('https://example.com/rpc/xmlrpc',allow_none=True,transport=MyTransport)
server.confluence1.login(username, password) # <-- exception
原始连接已建立,但对 RPC 方法的第一次调用将失败并出现上述错误。
删除 transport=MyTransport 解决了这个问题。
注意:我尝试了相同的 SafeTransport 和相同的结果。
我确实需要一个自定义传输来注入一些标头。我该如何解决?