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)
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();
Quest'ultimo è il costruttore utilizzato per creare l'oggetto socket!
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!!