通过HTTP在Python中接收XML文档

0 投票
2 回答
2157 浏览
提问于 2025-04-15 23:07

我想用Python做一个非常简单的网页服务器,它能通过HTTP接收XML文档,然后再发送一个XML文档作为响应。

你们有没有什么例子可以参考?

我只是想了解一下怎么安排这个工作……

非常感谢!

更新:

我需要这样的东西:

一个客户端发送一个包含XML文档的POST请求:

< request >
< name>plus< /name>
< param>2< /param>
< param>3< /param>
< /request >

然后Python服务器的响应是:

< response>
< result>OK< /result>
< outcome>5< /outcome>
< /response >

你们有没有这样的例子可以分享?

2 个回答

0

这里有一个使用标准库的例子:

或者你可以使用一些轻量级的网页框架:

1

你可以使用XMLRPC:

这是一个SimpleXMLRPCServer的例子(来自Python文档)

服务器代码:

from SimpleXMLRPCServer import SimpleXMLRPCServer
from SimpleXMLRPCServer import SimpleXMLRPCRequestHandler

# Restrict to a particular path.
class RequestHandler(SimpleXMLRPCRequestHandler):
    rpc_paths = ('/RPC2',)

# Create server
server = SimpleXMLRPCServer(("localhost", 8000),
                            requestHandler=RequestHandler)
server.register_introspection_functions()

# Register pow() function; this will use the value of
# pow.__name__ as the name, which is just 'pow'.
server.register_function(pow)

# Register a function under a different name
def adder_function(x,y):
    return x + y
server.register_function(adder_function, 'add')

# Register an instance; all the methods of the instance are
# published as XML-RPC methods (in this case, just 'div').
class MyFuncs:
    def div(self, x, y):
        return x // y

server.register_instance(MyFuncs())

# Run the server's main loop
server.serve_forever()

下面的客户端代码将调用前面服务器提供的方法:

import xmlrpclib

s = xmlrpclib.ServerProxy('http://localhost:8000')
print s.pow(2,3)  # Returns 2**3 = 8
print s.add(2,3)  # Returns 5
print s.div(5,2)  # Returns 5//2 = 2

# Print list of available methods
print s.system.listMethods()

撰写回答