X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=xmlrpcclient.py;h=7b50917df8b63243c3056e886d13a014cff28a2c;hb=2f1a76beca50cc9600df404c927753b11f94c87e;hp=866039f991e61639ce69939cb06ad62806c70450;hpb=b142a7b2b4b8a8ddb037377b90b4fe3be9f79a47;p=quix0rs-apt-p2p.git diff --git a/xmlrpcclient.py b/xmlrpcclient.py index 866039f..7b50917 100644 --- a/xmlrpcclient.py +++ b/xmlrpcclient.py @@ -4,11 +4,12 @@ from twisted.internet.defer import Deferred from xmlrpclib import loads, dumps +USER_AGENT = 'Python/Twisted XMLRPC 0.1' class XMLRPCClient(HTTPClient): def connectionMade(self): payload = dumps(self.args, self.method) self.sendCommand('POST', '/RPC2') - self.sendHeader('User-Agent', 'Python/Twisted XMLRPC 0.1') + self.sendHeader('User-Agent', USER_AGENT) self.sendHeader('Content-Type', 'text/xml') self.sendHeader('Content-Length', len(payload)) self.endHeaders() @@ -16,9 +17,17 @@ class XMLRPCClient(HTTPClient): self.transport.write('\r\n') def handleResponse(self, buf): - args, name = loads(buf) - apply(self.d.callback, args) - + try: + args, name = loads(buf) + except Exception, e: + print "response decode error: " + `e` + self.d.errback() + else: + l = [] + for i in args: + l.append(i) + l.append({'host' : self.transport.getHost()[1]}) + apply(self.d.callback, (l,)) class XMLRPCClientFactory(ClientFactory): def __init__(self, method, args, callback=None, errback=None): @@ -36,3 +45,6 @@ class XMLRPCClientFactory(ClientFactory): prot.args = self.args prot.d = self.d return prot + + def clientConnectionFailed(self, connector, reason): + self.d.errback() \ No newline at end of file