Python-构建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

我试图在变量“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
如何将HTTP请求字符串分配给full_req变量,以便打印此变量时,它包含所有三行

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
等。请注意,字符串连接比字符串格式更麻烦。除此之外,我还有很多优点。我实际上是想在屏幕上显示一个图像。为什么我需要保存文件?您不必将文件保存到磁盘;命名库仍然可以帮助您实现所需的功能。