python和rpc如何在xmlin中定制响应请求

2024-04-20 06:20:00 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我的xmlrpc服务器python代码。我想更改响应。在

from SimpleXMLRPCServer import SimpleXMLRPCServer
import logger
import db_connect

# Set up logging
logger.Logger(name="rpc", address="rpc.log")

server = SimpleXMLRPCServer(('0.0.0.0', 4242), logRequests=True)

# Expose a function
def get_status(extension):
  status=db_connect.get_status(extension)
  logger.logger().info(" extension number  %s Found %s 
   ",extension,status )
    return status

  server.register_function(get_status)

try:
   print ('Use Control-C to exit')
   server.serve_forever()
except keyboardInterrupt:
   print ('Exiting')

xmlrpc服务器向客户机返回以下响应。在

^{pr2}$

是否可以像下面这样返回自定义响应?在

<?xml version='1.0'?>
<Status>
<Extension>605</Extension>
<Bite_Status>Operational Fault</Bite_Status>
<Iridium_Channels_Available>0</Iridium_Channels_Available>
<DND_State>Disabled</DND_State>
<DND_Override>Disabled</DND_Override>
<Mute_State>Disabled</Mute_State>
</Status>

还想更改http头响应状态代码。在


Tags: 代码import服务器dbgetserverstatusextension
1条回答
网友
1楼 · 发布于 2024-04-20 06:20:00

如果要从xmlrpc服务器返回多个可能嵌套的元素,请让函数返回字典:

def status(ext):
    status = { 
        'Extension': 605,
        'Bite_Status': 'Operational Fault',
        'Iridium_Channels_Available': 0,
        'DND_State': 'Disabled',
        'DND_Override': 'Disabled',
        'Mute_State': 'Disabled'
    }
    return status

server.register_function(status)

这将返回下面的xml;它比您的示例更详细,因为它必须符合xmlrpc规范。如果使用标准库的ServerProxy作为客户机,则xml将转换为与服务器函数生成的字典相同的字典。在

^{pr2}$

状态码在服务器实现中是hardcoded,因此除非您编写自己的服务器,否则无法更改。还要注意,xlmrpc specification需要返回代码200才能成功响应。在

相关问题 更多 >