0

我正在尝试在 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 和相同的结果。

我确实需要一个自定义传输来注入一些标头。我该如何解决?

4

1 回答 1

1

更改为transport=MyTransport(),不是类型,而是此类型的一个实例。

于 2014-05-06T11:13:43.923 回答