Python-构建HTTP请求字符串变量
我试图在变量“full_req”中构建HTTP请求字符串。以下是HTTP请求的外观:Python-构建HTTP请求字符串变量,python,Python,我试图在变量“full_req”中构建HTTP请求字符串。以下是HTTP请求的外观: GET /images/logo/ HTTP/1.1 Host: www.google.com Connection: close 我已经编写了python代码,因此如果输入url“”,它将把url分成3部分。以下是我使用的变量: host(包含www.google.com) 路径(包含/images/logo/) 文件(包含googlelogo.png) 端口(显示的是无,但我想应该是80) 如何将HT
GET /images/logo/ HTTP/1.1
Host: www.google.com
Connection: close
我已经编写了python代码,因此如果输入url“”,它将把url分成3部分。以下是我使用的变量:
(包含host
)www.google.com
(包含路径
)/images/logo/
(包含文件
)googlelogo.png
(显示的是端口
,但我想应该是无
)80
print(full_req)
尝试了字符串连接,但无效。我使用了这个资源:。字符串格式或简单的连接应该可以做到这一点 。有很多选择,这取决于版本。在Python2中,它是常用的,但在Python3中,您主要使用 。您仍然可以将最简单的连接形式与
+
运算符一起使用,如下所示:
full_req = 'GET ' + path + ' HTTP/1.1\r\n' \
'HOST: ' + host + '\r\n' + \
'Connection: close'
。请注意,它不会请求文件(根据您的示例,您请求的是父文件夹,而不是文件本身),如果您计划下载文件,而不仅仅是尝试使用HTTP协议,则会有内置模块来执行此操作(检查)
。打开连接(在套接字中)时将使用端口号(HTTP通常为80),但您的示例似乎没有完成请求的这一部分
。Amplexos。您可以使用字符串格式:
request = 'GET {path} HTTP 1.1\r\nHost: {host}\r\nConnection: Close\r\n\r\n'.format(path=path, host=host)
这使用了现代的,但您也可以使用。试试:
def request(host, path, file):
return '''GET %s%s HTTP/1.1\r
Host: %s\r
Connection: close''' % (path, file, host)
据我所知,该端口未包含在实际的HTTP请求中。这里的关键是使用
%
您的目标是什么?如果您只是想发出请求,那么最好使用/或…您知道Python附带了吗?很明显,您的文件只能使用“\n”(linux样式)换行符,但是,最好手动设置换行符。@Diegonnes:谢谢链接,我其实不知道!我将修改答案。它不会将HTTP请求存储在变量中。要将结果存储在变量中,请在定义函数后使用req=request(主机、路径、文件)
。或者,只需编写req=''GET%s%s HTTP/1.1\r
等。请注意,字符串连接比字符串格式更麻烦。除此之外,我还有很多优点。我实际上是想在屏幕上显示一个图像。为什么我需要保存文件?您不必将文件保存到磁盘;命名库仍然可以帮助您实现所需的功能。