Odoo中文社区可以通过以下两个域名访问:shine-it.net , odoo.net.cn

由于系统升迁的原因,本论坛部分较早期的内容存在格式和链接损坏失效的问题,并非本论坛系统本身的缺陷,望谅解

本社区没有维护任何QQ群讨论组,任何与本社区同名的QQ群讨论组的言论与本社区无关!

开发人员可以登录gitter讨论组: http://gitter.im/odoo-china/Talk, 需要github账号

如果您登录系统碰到问题,请在微信公众号留言:

让 OE 的 XML-RPC 支持 Silverlight 和 Flash



  • 昨晚 hack 搞定的,没时间细写了,大概说一下原理:
    Silverlight 和 Flash 作为服务器插件,为了安全起见,就是防止 DDos 之类,限制不能做跨域 HTTP 请求,如果要允许跨域调用要在被请求的 web 服务器的根目录下放置 crossdomain.xml 并提供设置,SL 和 Flash 会先下载这个文件然后才决定是否允许请求。
    OpenERP 的 xml-rpc 服务器用的是 Python 标准库的 SimpleXMLRPCServer,支持持 XML-RPC 调用的 POST 请求,并不是 web 服务器,不能用 GET 请求返回文件,但是 SimpleXMLRPCServer 提供了
    SimpleXMLRPCRequestHandler 可以让我们自定义请求的处理器,所以,让我们自己加上 GET 请求的支持,返回 crossdomain.xml 文件:

    1. 修改 netsvc.py,为 SimpleXMLRPCRequestHandler 类加上下面的方法:[code]
      class SimpleXMLRPCRequestHandler(GenericXMLRPCRequestHandler, SimpleXMLRPCServer.SimpleXMLRPCRequestHandler):
      rpc_paths = map(lambda s: '/xmlrpc/%s' % s, GROUPS.get('web-services', {}).keys())

      def do_GET(self):
      #only allow a request for the crossdomain file
      if self.path != '/crossdomain.xml':
      self.send_response(403)
      self.log_request(403)
      return

       #open the crossdomain file and read its contents
       response = open('crossdomain.xml', 'r').read()
      
       #write the data to the socket along with valid HTTP headers
       self.send_response(200)
       self.send_header("Content-type", "text/xml")
       self.send_header("Content-length", str(len(response)))
       self.end_headers()
       self.wfile.write(response)
       self.log_request(200)
      

    [/code]并在 OE 的 openerp-server/bin/ 目录下放上 crossdomain.xml,内容如下:[code]<?xml version="1.0"?>
    <cross-domain-policy>
    <allow-access-from domain="*" />
    </cross-domain-policy>[/code]我用 Silverlight3 在 Visual Studio 2010 下测试的,用了 code.google.com/p/xmlrpc-silverlight/ 提供的 XMLRPC 库。
    OpenERP 的 XML-RPC 端口是 80,其他的我没测试。

    调用 [检测到链接无效,已移除] 方法的结果见附件图。

    Flash 和 Silverlight 的 crossdomain.xml 是通用的,我对 Flash 无爱,各位能人请自行测试。

    [[i] 本帖最后由 oldrev 于 2010-4-21 22:28 编辑 [/i]]



  • alwaysrev.spaces.live.com/blog/cns!218708052A8413FB!322.entry?&_c02_vws=1
    这篇润色了一下



  • cid-218708052a8413fb.skydrive.live.com/self.aspx/.Public/Oldrev.AgXmlRpc.zip

    silverlight 程序源码下载,使用 Visual Studio 2010 编译,也带了编译好的程序,需要 Silverlight 3.



  • 呵呵... 赞一下. 虽然不太喜欢微软的东西...


Log in to reply