2013-04-23 3 views
0

Qooxdoo를 사용해 본 결과 Python 테스트에서 SimpleXMLRPCServer로 간단한 Python 서버를 만들었지 만 문제없이 데이터를 얻을 수 있었지만 Qooxdoo에서이 데이터를 얻을 수 있습니까? 나는 길을 잃고 3 일간 검색했지만 해결책을 얻지 못했습니다.QooxDoo FrontEnd + Python BackEnd (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, { "오류"NULL, "ID"1 "결과": "클라이언트 상기 [포 fin] "}));

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"); 

내가 잃어버린 : ((

파일 :

내가 응답처럼 qooxdoo에서 조회 할 경우

하지만 qooxdoo에 대한 [error.png]

코드입니다

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

음, firebug와 함께이 오류는 owncloud qx.io. remote.ScriptTransport .....

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

안부를 감지합니다.

답변

1

XML-RPC와 JSON-RPC를 혼동하고 qooxdoo 만 후자를 지원합니다. 이러한 프로토콜은 비슷하지만 데이터 교환 형식이 다릅니다 (XML 또는 JSON). SimpleXMLRPCServer 대신 qooxdoo contrib 프로젝트 인 "RpcPython"을 서버 측에서 사용할 수 있습니다.

참조 :

이 서버를 당신이 그것을 테스트 할 수 있어야 실행이 있으면 :

qooxdoo (클라이언트) 코드도 잘 작동합니다. :)

-1

Richard Sternagel이 rpcpython에 관해 썼습니다. 이 버전의 rpcpython은 현재 버전의 simplejson에서는 작동하지 않습니다. json.py의 Becouse가 잘못 가져옴 :

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

개선 된 rpcpython을 사용하거나 다른 서버 (예 : CherryPy)를 사용하십시오. 좋아

0

Richard가 이미 지적한 것처럼 Qooxdoo는 JSON-RPC의 향미 만 지원합니다.

나는 QooxdooCherrypyJsonRpc이라는 원본의 포크를 유지합니다. 주요 목표는 전송 프로토콜을 강력한 프레임 워크로 넘겨주고 JSON RPC 항목 만 남기는 것이 었습니다. 분명히 강력한 프레임 워크 인 CherryPy는 HTTP, WSGI 및 FastCGI 배포를 허용합니다. 코드가 리팩토링되어 테스트로 덮여있었습니다. 나중에 업로드/다운로드 지원과 일관된 시간대 datetime 교환을 추가했습니다. 다음과 같이

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 코드에서 수행 할 수 있습니다 :

아주 최소한 파이썬 백엔드 (test.py를 호출)처럼 보일 수 있습니다

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 

자세한 내용은 위에 게시 한 패키지 페이지를 참조하십시오.