[BangPypers] Need help with the 'transport' for setting the header while calling a function at server side

Usman Ajmal uzmanajmal at gmail.com
Fri Sep 12 20:39:00 CEST 2008


I am getting an Internal Server Error  500 when i run my client code. I am
trying to call a function at the server side which for now only returns a
string. Meanwhile this calling i also set the header of HTTP request.
Following are my client and server code. Am i doing something wrong?

#-----------------------Server code-----------------------------

import SimpleXMLRPCServer
class AuthenticationFunctions:
    def system_auth(self):
        # No need to print here if you are going to print it at the client
side. Return it instead.
        return "something..."
server = SimpleXMLRPCServer.SimpleXMLRPCServer(("localhost", 8000))
server.register_instance(AuthenticationFunctions())
server.serve_forever()


#-----------------------Client code-----------------------------
import sha,random, os, time, sha, quopri, xmlrpclib

class SecureTransport(xmlrpclib.Transport):
       def set_authorization(self, ustring, text_ucert):
           self.authorization = quopri.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)

def caller():
    #Opening file named newcert.pem in which certificate generated via
openssl command is placed
    infile = open('newcert.pem', "r+")
    if infile:
        text_ucert = infile.read()
    infile.close()

    #Generating a random string
    random.seed();
    ustring_raw="%s_%f_%f"%(os.getpid(),time.time(),random.random())

    #For calculating the hash of some arbitrary message
    hashValue = sha.new()
    hashValue.update("(.2).ch^kjdw*()!hjsu7 at hsue
@!jssljdu2837.kd'lsid4vhwoi3821@#1azzZ3234202J83&")

    #Updating the hash with the previously generated random string
    hashValue.update(ustring_raw)
    ustring  =  quopri.encodestring(hashValue.digest())

    #Instantiating the transport
    t = SecureTransport()
       t.set_authorization(ustring, text_ucert)
       server = xmlrpclib.Server('http://localhost:8000',transport=t)

    #Calling some arbitrary function at server side
    print server.system_auth()

caller()
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/bangpypers/attachments/20080912/469a2dd6/attachment.htm>


More information about the BangPypers mailing list