Requests 请求

HTTP协议中定义了八种访问类型来表明对Request-RUI指定资源的操作方式,其中常用的GET、POST方法,还有PUT、DELETE、HEAD、OPTIONS、CONNECT、TRACE,每一种访问类型介绍如下:
1、GET:请求指定的页面信息,并返回实体主体;
2、POST:请求服务器接受所指定的文档作为对所标志的URI的新的从属实体,用于更新数据时,只发送更新数据更新部分,而不是发送数据整体;
3、PUT:从客户端想服务器传送数据替换指定的文档内容,用于数据更新时,发送数据整体;
4、DELETE:请求服务器删除指定的页面
5、HEAD:只请求页面的首部
6、TRACE::请求服务器在响应中的实体主体部分返回所得到的内容
7、OPTIONS:允许客户端查看服务器的性能
8、CONNECT:HTTP/1.1 中预留给能够将连接改为管道方式的代理服务器。
我们常用的GET和POST,二者具体使用和区别:
GET适用于多数请求,而保留POST仅用于更新站点,根据HTTP规范,GET用户信息获取,是幂等和安全操作的。所谓安全操作是获取信息而不进行数据更新,幂等意味这对同一URL的多个请求应该返回同样的结果。POST请求可能会改变服务器上资源的请求,以此博客为例,如果通过POST请求上传了评论信息,那么再次请求就会获取信息的内容了。
在HTML的FORM表单中,如果不指定方法,默认是GET,请求的数据会附在url之后,以?和url分开,以&连接多个数据,字母和数字远洋发送,空格转换成'+'号,其他符号转为%XX,其中XX为符号以16进制表示的ACSII值。GET方法请求提交的数据设置放在HTTP的请求协议头中,所以安全敏感数据不能使用GET方法,而POST是放在实体数据中,所以GET请求是由长度限制,最多1024字节,而POST无限制。

在Requests中,对于GET 和 POST请求的使用有所不同,主要的地方在传入数据时,GET方法使用params,而POST方式使用data 或 files:
 
 
GET请求: r = requests.get(url, cookies=cookie, params = payload)POST 请求:
r = requests.post(url, cookies-cookie, data = payload)

 在POST请求中,有时会需要传输一个JSON字符串而非字段,此处提供了字典和JSON字符串之间的转换方法:
json.loads(json_str) json字符串转换成字典
json.dumps(dict) 字典转换成json字符串

响应内容:
1、响应的编码格式:
Requests会基于HTTP头部对响应的编码格式做出有根据的推断,可以使用r.encoding打印编码格式,或者时r.encoding='utf8'来设置编码格式

2、返回响应内容:

r.content: 返回二进制字节
r.json() 返回json字符串

r.raw: 返回原始数据,如果需要使用时,则在请求中添加stream=True

猜你喜欢

转载自blog.csdn.net/freezing12/article/details/79825508