首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SimpleXMLRPCServer与BaseHTTPRequestHandler在Python中的结合

SimpleXMLRPCServer与BaseHTTPRequestHandler在Python中的结合
EN

Stack Overflow用户
提问于 2010-08-24 21:22:04
回答 3查看 1.5K关注 0票数 3

由于跨域xmlrpc请求在JavaScript中是不可能的,所以我需要创建一个Python,它通过HTTP公开一些服务。

在python中创建HTTP请求处理程序和SimpleXMLRPCServer非常容易,但它们都必须在不同的端口上侦听,这意味着不同的域。

是否有一种方法可以在本地主机上的单个端口上侦听并同时公开HTTPRequestHandler和XMLRPCRequest处理程序?

现在我有两种不同的服务:

代码语言:javascript
复制
httpServer = HTTPServer(('localhost',8001), HttpHandler);
xmlRpcServer = SimpleXMLRPCServer(('localhost',8000),requestHandler=RequestHandler)

更新

  • I不能在设备
  • 上安装Apache托管页面将是单个html页面
  • ,唯一的客户端将是服务器上的设备,python服务自己运行

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-08-25 15:27:39

解决办法其实很简单,基于韦业东的答覆:

我所要做的就是继续使用SimpleXMLRPCServer实例,但是修改处理程序:

代码语言:javascript
复制
class RequestHandler(SimpleXMLRPCRequestHandler):
    rpc_paths = ('/RPC2',)

    def do_GET(self):
          #implementation here

这将导致处理程序响应GET请求以及原始POST (XML)请求。

票数 2
EN

Stack Overflow用户

发布于 2010-08-24 22:50:10

它们都是SocketServer.TCPServer的子类。必须有某种方法来重构它们,以便一旦服务器实例可以分派给两者。

一个更容易的选择可能是将HTTPServer保持在前面,而代理XML则保持在SimpleXMLRPCServer实例的前面。

票数 2
EN

Stack Overflow用户

发布于 2010-08-24 21:34:33

使用HTTPServer提供内容不是一个好主意。您应该使用像Apache这样的CGI服务器,并使用Python作为CGI(或者像mod_wsgi这样更高级的接口)。

然后,you服务器运行在一个端口上,您可以直接在you服务器上服务器HTML,用Python编写任意数量的CGI脚本,例如使用CGIXMLRPCRequestHandler编写XMLRPC请求。

代码语言:javascript
复制
class MyFuncs:
    def div(self, x, y) : return x // y


handler = CGIXMLRPCRequestHandler()
handler.register_function(pow)
handler.register_function(lambda x,y: x+y, 'add')
handler.register_introspection_functions()
handler.register_instance(MyFuncs())
handler.handle_request()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3561140

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档