关键词

Python Http发送请求浅析

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请求、文件上传下载等。

本文链接:http://task.lmcjl.com/news/6285.html

展开阅读全文