1

我有一个使用 SOAPpy 的 Python 网络服务。webservice服务器的结构如下图所示:

class myClass:
  def hello():
    return 'world'

if __name__ == "__main__":
  server = SOAPServer( ( 'localhost', 8888 ) )
  myObject = myClass()
  namespace = 'whatever::namespace'
  server.registerObject( myObject, namespace )
  server.serve_forever()

如果客户端hello()从我的 Web 服务调用该方法,我如何读取标头,以便开始记录一些信息(例如:IP 地址)以进行调试?

4

2 回答 2

2

你想在你的 hello 方法中进行日志记录吗?这是一个最小的示例,它显示了如何将 SOAPContext 信息(可以为您提供一些此类信息)传递到函数/方法调用中:

from SOAPpy import *

def hello(_SOAPContext = None):
    return "Your IP address is %s" % _SOAPContext.connection.getpeername()[0]

if __name__ == "__main__":
  server = SOAPServer( ( '10.3.40.104', 8080 ) )
  server.registerFunction( MethodSig(hello, keywords=0, context=1) )
  server.serve_forever()
于 2010-08-09T18:25:10.137 回答
1

您可以将 a 添加RequestHandler到扩展SOAPRequestHandler并替换的 SoapServer 对象(例如,查看server.pyHeaderHandler的源代码)

于 2010-08-09T17:45:33.317 回答