]> granicus.if.org Git - python/commitdiff
[Bug #1349316] Show how to use XML-RPC through a proxy
authorAndrew M. Kuchling <amk@amk.ca>
Thu, 8 Dec 2005 14:54:20 +0000 (14:54 +0000)
committerAndrew M. Kuchling <amk@amk.ca>
Thu, 8 Dec 2005 14:54:20 +0000 (14:54 +0000)
Doc/lib/libxmlrpclib.tex

index 6354c45c60e0eb9409f35a9fcce0b14cb4cbe29e..0fb88c5d91eb42e8a5cdebb7c79f4727ff198549 100644 (file)
@@ -355,3 +355,30 @@ try:
 except Error, v:
     print "ERROR", v
 \end{verbatim}
+
+To access an XML-RPC server through a proxy, you need to define 
+a custom transport.  The following example, 
+written by NoboNobo, % fill in original author's name if we ever learn it
+shows how:
+
+% Example taken from http://lowlife.jp/nobonobo/wiki/xmlrpcwithproxy.html
+\begin{verbatim}
+import xmlrpclib, httplib
+
+class ProxiedTransport(xmlrpclib.Transport):
+    def set_proxy(self, proxy):
+        self.proxy = proxy
+    def make_connection(self, host):
+        self.realhost = host
+       h = httplib.HTTP(self.proxy)
+       return h
+    def send_request(self, connection, handler, request_body):
+        connection.putrequest("POST", 'http://%s%s' % (self.realhost, handler))
+    def send_host(self, connection, host):
+        connection.putheader('Host', self.realhost)
+
+p = ProxiedTransport()
+p.set_proxy('proxy-server:8080')
+server = xmlrpclib.Server('http://time.xmlrpc.com/RPC2', transport=p)
+print server.currentTime.getCurrentTime()
+\end{verbatim}