2013-04-23 100 views
0

我試過Qooxdoo,我用SimpleXMLRPCServer做了一個簡單的Python服務器,用Python測試我得到的數據沒有問題,但是我可以從Qooxdoo獲取這些數據嗎?我迷路了,我已經搜索了3天,但沒有得到解決方案。QooxDoo前端+ Python後端(SimpleXMLRPCServer)問題

我試試這個:

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

我想和閱讀所有的的Qooxdoo -contrib。


那麼,

RpcPython - >確定

,並在類/的Qooxdoo - 從webroser> test.py

運行服務器[start-server.py]和查詢:

http://127.0.0.1:8000//?_ScriptTransport_id=1&nocache=1366909868006&_ScriptTransport_data={%22service%22%3A%22qooxdoo.test%22%2C%22method%22%3A%22echo%22%2C%22id%22%3A1%2C%22params%22%3A[%22Por%20fin%22]} 

和webroser的答覆是:

qx.io.remote.ScriptTransport._requestFinished(1,{ 「錯誤」:空, 「ID」:1, 「結果」:「客戶端表示:[POR fin]「});

,但如果我從查詢的Qooxdoo像的回覆是[error.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

那麼,用螢火蟲這個錯誤在owncloud qx.io. remote.ScriptTransport .....是檢測

¿?.............

問候。

回答

1

我猜你混淆了XML-RPC和JSON-RPC,而qooxdoo只支持後者。這些協議是相似的,但數據交換格式不同(XML或JSON)。而不是SimpleXMLRPCServer你可以在qooxdoo contrib項目的服務器端使用「RpcPython」。

參見:

一旦你有了這個服務器運行起來,你應該能夠測試:

之後,你的qooxdoo(客戶端)代碼也希望工作。 :)

-1

Richard Sternagel寫了關於rpcpython。此版本的rpcpython不適用於當前版本的simplejson。 Becouse in json.py有不正確的導入:

from simplejson.decoder import ANYTHING 
    from simplejson.scanner import Scanner, pattern 

改進rpcpython或使用其他服務器,例如CherryPy。

0

正如Richard所指出的,Qooxdoo只支持JSON-RPC。

我保留原來的rpcpython的叉子叫QooxdooCherrypyJsonRpc。主要目標是將傳輸協議移交給一些健壯的框架,並且只留下JSON RPC的東西。 CherryPy顯然是一個強大的框架,允許部署HTTP,WSGI和FastCGI。代碼被重構並覆蓋測試。後來我添加了上傳/下載支持和一致的時區日期時間交換。

在最起碼你的Python後端可能看起來像(稱之爲test.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操作步驟如下:

var rpc = new qx.io.remote.Rpc(); 
rpc.setServiceName('test.Test'); 
rpc.setUrl('http://127.0.0.1:8080/service'); 
rpc.setCrossDomain(true); // you need this for opening app from file:// 
rpc.addListener("completed", function(event) 
{ 
    console.log(event.getData()); 
}); 
rpc.callAsyncListeners(this, 'add', 5, 7); 

或者打開鏈接直接:

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 

欲瞭解更多信息,看看我張貼在上面的包頁面。