Python Http发送请求浅析
一、HTTP请求介绍
HTTP(Hypertext Transfer Protocol)是一种用于传输超媒体文档的应用层协议。HTTP协议是基于客户端-服务端架构模型进行通信,服务端为HTTP服务器,客户端通过多种浏览器、网页、工具进行请求。HTTP协议默认端口号为80。
二、HTTP请求的组成
HTTP请求由请求头和请求体两部分组成。
(1)请求头
请求头是由关键字和它的值对构成的;它们以回车和换行符(CRLF)分隔行。第一行必须是请求的方法、URI和HTTP版本号,如下图所示:
GET /myfile.html HTTP/1.1
其中,GET是请求方法,/myfile.html是请求的URI,HTTP/1.1是请求的HTTP版本号。请求头的其它部分描述了客户端(浏览器)的属性以及具体请求的参数。示例如下:
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding: gzip, deflate
Accept-Language: zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3
Connection: keep-alive
Host: www.example.com
Referer: http://www.example.com/index.html
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:28.0) Gecko/20100101 Firefox/28.0
(2)请求体
如果我们对服务器发送POST或PUT请求,那么我们需要以一些文本或者其它数据形式(如JSON格式),把数据放到请求体中并提交给服务器。而且我们还要在请求头中指明请求体的类型、长度等信息。
三、Python发送HTTP请求
在Python中,我们可以用第三方库requests来发送HTTP请求。该库已经被广泛使用并得到很好的支持。通过requests库,HTTP请求变得十分简单,支持GET、POST、PUT、DELETE等方式请求,同时支持HTTPS和HTTP代理。
1. 安装requests库
使用pip安装requests库,命令如下:
pip install requests
2. 发送HTTP GET请求
使用requests库发送HTTP GET请求也很简单,只需要调用requests.get(url)函数即可。如下述代码示例:
import requests
url = "https://www.example.com"
res = requests.get(url)
print(res.content.decode("utf-8"))
3. 发送HTTP POST请求
使用requests库发送HTTP POST请求也很简单,只需要调用requests.post(url, data=payload)函数即可。其中,payload是要发送的请求体数据。如下述代码示例:
import requests
import json
url = "https://www.example.com/login"
payload = {"username": "test", "password": "123456"}
headers = {"Content-type": "application/json;charset=UTF-8"}
res = requests.post(url, data=json.dumps(payload), headers=headers)
print(res.status_code)
四、总结
通过简单介绍Python Http发送请求浅析,我们了解了HTTP请求的组成和Python发送HTTP请求的方法。在此之上,我们可以继续扩充,例如发送HTTP PUT请求、DELETE请求、文件上传下载等。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python Http发送请求浅析 - Python技术站