je ne peux pas obtenir les données dans recv() Je veux que les données que les entrées de l'utilisateur dans les champs de formulairePython ne peut pas recevoir les données utilisateur dans le serveur socket HTTP
code:
def recvall(self, conn):
BUFF_SIZE = 4096 # 4 KiB
data = ""
while True:
packet = conn.recv(BUFF_SIZE).decode('utf-8')
data += packet
if len(packet) < BUFF_SIZE:
break
print (data)
sortie:
POST /search HTTP/1.1
Host: localhost
Connection: keep-alive
Content-Length: 14
Cache-Control: max-age=0
Origin: http://localhost
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36
Content-Type: application/x-www-form-urlencoded
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Referer: http://localhost/
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.8
Il semble manquer une ligne ou quelque chose que j'ai tout essayé je veux que les données à la fin
Cela semble une condition de terminaison étrange: 'si len (paquet)
j'ai essayé: sinon paquet: pause mais il a gardé la boucle donc je suis allé avec cela et cela a fonctionné –
Si vous voulez vraiment implémenter votre propre pile HTTP s'il vous plaît lire le [standard] (https://www.ietf.org/ rfc/rfc2616.txt) au lieu de simplement deviner. La requête HTTP est constituée d'un en-tête et d'un corps facultatif délimité par une nouvelle ligne et la taille du corps est indiquée dans l'en-tête. Vous ne pouvez pas utiliser simplement 'recv' dans l'espoir que vous obteniez tout, mais vous devez réellement traiter correctement le protocole HTTP. –