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

1 投票
2 回答
1667 浏览
提问于 2025-04-16 02:32

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

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()方法,我该怎么读取请求的头信息,这样我就可以开始记录一些信息(比如:IP地址)来进行调试呢?

2 个回答

1

你可以给SoapServer对象添加一个RequestHandler,这个处理器是从SOAPRequestHandler扩展出来的,并且可以替换掉HeaderHandler。如果想看看具体的例子,可以去看看server.py的源代码。

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

撰写回答