使用soappy SOAPServer时,如何读取请求头?
我有一个用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()