使用soappy SOAPServer时,如何读取请求的标头?

时间:2010-08-09 16:53:13

标签: python web-services soap soappy

我有一个使用SOAPpy的Python web服务。 Web服务服务器的结构如下所示:

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()

如果客户端从我的webservice调用hello()方法,我该如何读取头文件,这样我就可以开始记录一些信息(例如:ip address)进行调试?

2 个答案:

答案 0 :(得分: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()

答案 1 :(得分:1)

您可以向扩展RequestHandler的SoapServer对象添加SOAPRequestHandler并替换HeaderHandler(例如,查看server.py的来源)< / p>