from twisted.internet.defer import Deferred
from xmlrpclib import loads, dumps
+import socket
+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()
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:
+ apply(self.d.callback, args)
class XMLRPCClientFactory(ClientFactory):
def __init__(self, method, args, callback=None, errback=None):
self.d.addCallback(callback)
if errback:
self.d.addErrback(errback)
-
+ self.noisy = 0
+
def buildProtocol(self, addr):
prot = XMLRPCClient()
prot.method = self.method
prot.args = self.args
prot.d = self.d
return prot
+
+ def clientConnectionFailed(self, connector, reason):
+ self.d.errback()
\ No newline at end of file