我有一个文件,我正在阅读如下。 [忽略所有与连接相关的参数]
somefile=open(/path/to/some/file,'rb')
READ_somefile=somefile.read()
somefile.close()
client_connection.send((str.encode('HTTP/1.1 200 OK\nContent-Type: image/png\n\n')))
client_connection.send((READ_somefile))
当我使用上面的代码时,我能够正确显示我的html网页。 但我想只使用一个发送而不是两个发送问题。 我尝试使用以下
client_connection.send((str.encode('HTTP/1.1 200 OK\nContent-Type: image/png\n\n',READ_somefile)))
我收到以下错误。
client_connection.send((str.encode('HTTP/1.1 200 OK\nContent-Type: image/png\n\n',READ_somefile)))
TypeError: encode() argument 1 must be str, not bytes
然后我尝试使用它。
client_connection.send((str.encode('HTTP/1.1 200 OK\nContent-Type: image/png\n\n',str(READ_somefile))))
我收到以下错误。
client_connection.send((str.encode('HTTP/1.1 200 OK\nContent-Type: image/png\n\n',str(READ_somefile))))
LookupError: unknown encoding: b'/*!
是否可以告诉我应该使用哪种编码来同时发送标题和内容?
请注意,我不能使用任何外部模块。
答案 0 :(得分:0)
签名是socket.send(bytes[, flags])
- 所以
你拥有的是什么
'HTTP/1.1 200 OK\nContent-Type: image/png\n\n'
,当前是一个unicode字符串,因此需要编码为字节字符串明显的解决方案是:
with open(/path/to/some/file,'rb') as somefile:
body = somefile.read()
header = 'HTTP/1.1 200 OK\nContent-Type: image/png\n\n'.encode()
payload = header + body
client_connection.send(payload)