XML RPC Problem....

Fredrik Lundh fredrik at pythonware.com
Thu Sep 11 03:18:56 EDT 2008


Usman Ajmal wrote:

> And i also fount that a typical system.auth call will look like:
> 
> POST /xmlrpc/clarens_server.py HTTP/1.0
> Host: localhost
> User-Agent: xmlrpclib.py/0.9.9 (by www.pythonware.com <http://www.pythonware.com>)
> 
> Content-Type: text/xml
> Content-Length: 105
> AUTHORIZATION: Basic MkhVTm9VazYxbXArVEZLS0dCY2tIRlA3bjVzPQo6RnJvbSBi
> <?xml version='1.0'?>
> <methodCall>
>   <methodName>system.auth</methodName>
> 
>   <params>
>   </params>
> </methodCall>
> 
> 
> Problem is that i don't know how do i generate above xml system.auth 
> call. Can anyone please tell me how do call a function, setting the 
> header of the call too?

you need to plugin a custom transport.  see this page for an example:

     http://www.python.org/doc/lib/xmlrpc-client-example.html

in your case, it should be sufficient to override send_request, e.g. 
(untested):

     class SecureTransport(xmlrpclib.Transport):

         def set_authorization(self, ustring, text_ucert):
             self.authoriation = encodestring(
                 "%s:%s" % (ustring,text_ucert)
             )

         def send_request(self, connection, handler, request_body):
             connection.putrequest("POST", handler)
             connection.putheader("Authorization",
                 "Basic %s" % self.authorization
             )

and instantiate the transport by doing

     t = SecureTransport()
     t.set_authorization(ustring, text_ucert)

before passing to the server proxy.

</F>




More information about the Python-list mailing list