Salve ragazzi sto scrivendo un piccolo client HTTP in python che implementa le funzionalità classiche del protocollo suddetto (GET, POST, HEAD e qualche altra).
Ovviamente uso le socket per la comunicazione ma a quanto pare ho un problema con la ricezione dei dati... vi posto il codice di un solo metodo il GET:
codice:#Includere una funzione python, chiamata 'httpGET', che invia ad un server #remoto un messaggio GET. L'intestazione della funzione è la seguente: #host-> è l'indirizzo dell'host (stringa) #port-> è la porta (intero) #path-> è il path della risers (stringa) #version-> è la versione del protovollo HTTP usato (stringa) def httpGET(self, host , port , path , version ): print "Sto tentando di effettuare la seguente richieta " print self._METHOD_['__GET__']+" "+path+" "+version+" al server "+host self.clientSocket.connect((host, port)) try: self.clientSocket.sendall(self._METHOD_['__GET__']+" "+path+" " +version) except socket.error: print "Request not send" data = self.clientSocket.recv(2048) print "hello" #Eser.4 self.clientSocket.close() print data body = self.SelectBody(data) self.DicPopulating(data, body)
Quest'ultimo è il costruttore utilizzato per creare l'oggetto socket!codice:def __init__(self): #Creazione della Socket per iniziare la comunicazione. try: self.clientSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) except socket.error, msg: print 'Failed to create a socket. Error Code: ' + str(msg[0]) +'' +' , error message: ' + msg[1] sys.exit();
il problema è proprio nella ricezione ma non capisco quale!!
PS: ovviamente questo è una esercitazione da svolgere...so bene che esiste la lib httplib.py...
Grazie!!