1 from twisted.internet.protocol import ClientFactory
2 from twisted.protocols.http import HTTPClient
3 from twisted.internet.defer import Deferred
5 from xmlrpclib import loads, dumps
7 class XMLRPCClient(HTTPClient):
8 def connectionMade(self):
9 payload = dumps(self.args, self.method)
10 self.sendCommand('POST', '/RPC2')
11 self.sendHeader('User-Agent', 'Python/Twisted XMLRPC 0.1')
12 self.sendHeader('Content-Type', 'text/xml')
13 self.sendHeader('Content-Length', len(payload))
15 self.transport.write(payload)
16 self.transport.write('\r\n')
18 def handleResponse(self, buf):
19 args, name = loads(buf)
20 apply(self.d.callback, args)
23 class XMLRPCClientFactory(ClientFactory):
24 def __init__(self, method, args, callback=None, errback=None):
29 self.d.addCallback(callback)
31 self.d.addErrback(errback)
33 def buildProtocol(self, addr):
35 prot.method = self.method