QooxDoo前端+Python后端(SimpleXMLRPCServer)问题

2024-06-16 10:00:52 发布

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

我尝试过Qooxdoo,并用SimpleXMLRPCServer制作了一个简单的Python服务器,通过Python测试,我可以毫无问题地获得数据,但是我可以从Qooxdoo获取这些数据吗?我迷路了,我找了3天都没找到解决办法。在

我试试这个:

var JSON_lista_empresas = 1000
button1.addListener("execute", function(e) 
{
    var rpc = new qx.io.remote.Rpc();
    rpc.setServiceName("get_data");
    //rpc.setCrossDomain(true);
    rpc.setUrl("http://192.168.1.54:46000");
    rpc.addListener("completed", function(event)
    {
        console.log(event.getData());
    });
    rpc.callAsync( JSON_lista_empresas, '');
});

我尝试了其他选择,但一无所获

文件链接:

http://mieresdelcamin.es/owncloud/public.php?service=files&dir=%2Fjesus%2Ffiles%2FQooxdoo

我试着读了所有的文章。在


RpcPython-->确定

课堂上/qooxdoo->;测试.py在

运行服务器[启动-服务器.py]以及来自webroser的查询:

^{pr2}$

webroser的回复是:

在qx.io.遥控器.ScriptTransport.\u requestFinished(1,{“error”:null,“id”:1,“result”:“客户端说:[Por fin]”“})

但如果我从qooxdoo询问,得到的答复是[错误.png]在

qooxdoo代码:

var rpc = new qx.io.remote.Rpc( "http://127.0.0.1:8000/");
    rpc.setCrossDomain( true);
    rpc.setServiceName( 'qooxdoo.test');
// asynchronous call
    var handler = function(result, exc) {
        if (exc == null) {
            alert("Result of async call: " + result);
        } else {
            alert("Exception during async call: " + exc+ result);
        }
    };
rpc.callAsync(handler, "echo", "Por fin");

我输了:()

文件位置:

http://mieresdelcamin.es/owncloud/public.php?service=files&dir=%2Fjesus%2Ffiles%2FQooxdoo

好吧,Firebug在owncloud中犯了这个错误qx.io.遥控器.ScriptTransport…..被检测到

是吗?。。。。。。。。。。。。。在

谨致问候。在


Tags: 数据io服务器jsonhttpvarfunctionresult
3条回答

好吧

在文件中http.py66号线qxjsonrc模块的变更

response='qx.io.remote.ScriptTransport._requestFinished(%s,%s);'%(scriptTransportID,response)

^{pr2}$

运行良好:)

包的此链接已修改:

http://mieresdelcamin.es/owncloud/public.php?service=files&dir=%2Fjesus%2Ffiles%2FQooxdoo

致以诚挚的问候和感谢!!!在

正如Richard已经指出的,Qooxdoo只支持JSON-RPC的风格。在

我维护了一个名为QooxdooCherrypyJsonRpc的原始rpcpython分支。主要目标是将传输协议移交给一些健壮的框架,只保留JSON-RPC的内容。CherryPy显然是一个健壮的框架,它允许HTTP、WSGI和FastCGI部署。代码被重构并被测试覆盖。后来我添加了上传/下载支持和一致的时区-日期-时间交换。在

至少你的Python后端看起来像(调用它测试.py)公司名称:

import cherrypy
import qxcpjsonrpc as rpc

class Test(rpc.Service):

  @rpc.public
  def add(self, x, y):
    return x + y

config = {
  '/service' : {
    'tools.jsonrpc.on' : True
  },
  '/resource' : {
    'tools.staticdir.on'  : True,
    'tools.staticdir.dir' : '/path/to/your/built/qooxdoo/app'
  }
}
cherrypy.tools.jsonrpc = rpc.ServerTool()

if __name__ == '__main__':
  cherrypy.quickstart(config = config)

然后可以在qooxdoo代码中执行以下操作:

^{pr2}$

或者直接打开链接:

http://127.0.0.1:8080/service?_ScriptTransport_id=1&_ScriptTransport_data=%7B%22params%22%3A+%5B12%2C+13%5D%2C+%22id%22%3A+1%2C+%22service%22%3A+%22test.Test%22%2C+%22method%22%3A+%22add%22%7D

更多信息,请看我在上面发布的包页面。在

我猜你把XML-RPC和JSON-RPC混淆了,而qooxdoo只支持后者。这些协议相似,但数据交换格式不同(XML或JSON)。您可以在服务器端使用“RpcPython”,而不是SimpleXMLRPCServer,这是一个qooxdoo contrib项目。在

参见:

一旦您启动并运行此服务器,您应该能够测试它:

在那之后,你的qooxdoo(客户端)代码也有望工作。:)

相关问题 更多 >