Thank for your help It's right, the code number 1 is not well structured that is the reason I modified it for the code number 2 But in the first one the xml_rpc call retun the good answer and in the second one I received a error message
I tried your code,this is a better structure (The Class Resource is in the next example in the book) But the code doesn't work, I have the same error message about xml_rpc answer [Failure instance: Traceback: <class 'xmlrpclib.Fault'>: <Fault -32602: 'server error. invalid method parameters'> C:\python27\lib\site-packages\twisted\internet\posixbase.py:263:_disconnectSelectable C:\python27\lib\site-packages\twisted\internet\tcp.py:433:connectionLost C:\python27\lib\site-packages\twisted\internet\tcp.py:277:connectionLost C:\python27\lib\site-packages\twisted\web\xmlrpc.py:373:connectionLost --- <exception caught here> --- C:\python27\lib\site-packages\twisted\web\xmlrpc.py:444:parseResponse C:\python27\lib\xmlrpclib.py:1137:loads C:\python27\lib\xmlrpclib.py:793:close ] The issue is how to call xml_rpc callRemote correctly ? Thank again Le 17 avril 2012 04:46, Phil Mayers <[email protected]> a écrit : > On 04/17/2012 03:38 AM, joel tremblet wrote: > > > I try to declare the Proxy(OF_XMLRPC_URL) differently, without success > > > > Where is my mistake .... > > That code is all wrong, and (to be blunt) pretty horrible too. > > Why have you re-implemented a HTTP protocol yourself? You're bound to > get this wrong (and in fact have, in several ways). Don't do this. Use > the HTTP stack that comes with Twisted. > > Anyway, your major mistake in the 1st example is that, at the end of the > lineReceived method, you always call the sendResponse() method. This > happens immediately, before the XMLRPC reply has come back, so your code > sends "no value". You need to attach the sendResponse method to the > deferred returned from the xmlrpc call. > > I would junk it and start again, like this: > > from twisted.web import server, resource, xmlrpc, http > > proxy = xmlrpc.Proxy(XMLRPC_URL) > > class MyResource(resource.Resource): > isLeaf = True > def render_GET(self, request): > sessid = request.args['sessid'][0] > keyid = request.args['keyid'][0] > d = proxy.callRemote('checkCommand', sessid, keyid) > d.addCallback(self._done, request) > d.addErrback(self._err, request) > return server.NOT_DONE_YET > > def _done(self, res, request): > if res!=1: > request.setResponseCode(406) > else: > request.setResponseCode(200) > request.finish() > > def _err(self, failure, request): > request.setResponseCode(405) > request.finish() > > reactor.listenTCP(8080, server.Site(MyResource())) > reactor.run() > > _______________________________________________ > Twisted-Python mailing list > [email protected] > http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python >
_______________________________________________ Twisted-Python mailing list [email protected] http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python
