import socket
import os
user_url = input("Enter url: ")
Host_name = user_url.split("/")[2]
mysock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
mysock.connect((Host_name, 80))
cmd = 'GET ' + user_url + ' HTTP/1.0\r\n\r\n'.encode()
mysock.send(cmd)
while True:
data = mysock.recv(512)
if len(data) < 1:
break
print(data.decode(),end='\n')
mysock.close()
Pour une raison quelconque, j'obtiens cette erreur
Entrez l'url: http://data.pr4e.org/romeo.txt
7 mysock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 8 mysock.connect((Host_name, 80)) 9 cmd = 'GET ' + user_url + ' HTTP/1.0\r\n\r\n'.encode() TypeError: can only concatenate str (not "bytes") to str
Avez-vous des idées sur ce que je fais de mal? Le codage et le décodage me semblent corrects, et je l'ai transféré en utilisant\n avant .encode (). C'est pour une classe
Le problème est que vous encodez avant de concaténer:
'GET ' + user_url + ' HTTP/1.0\r\n\r\n'.encode()
Vous devez d'abord concaténer, puis encoder le tout:
('GET ' + user_url + ' HTTP/1.0\r\n\r\n').encode()