当前位置:
首页 > temp > python入门教程 >
-
Python 发起post/get请求(封装)
1.get/post介绍
get和post是最常用的http/htttps请求方式,一定要掌握好二者各自特点以及区别。
2.get/post特点
get请求
请求参数在请求地址后面,提交的数据量较小,安全性较差,不建议用来提交敏感信息(地址栏中会显示,并且有可能被保存请求地址)。post请求
请求参数放在请求体中提交,提高的数据量大小没有限制,敏感信息相对安全。
3.get/post区别
GET一般用于获取/查询资源信息,而POST一般用于更新资源信息。
1、GET参数通过URL传递,POST放在Request body中。 2、GET请求会被浏览器主动cache,而POST不会,除非手动设置。 3、GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。 4、GET请求只能进行url编码,而POST支持多种编码方式。 5、POST请求的安全性比GET请求的安全性高,因为GET请求的参数是不加密,明文传输的,且会直接显示到浏览器的浏览框上;POST请求的数据则是可加密的,也不会显示到浏览器的浏览框上。 6、GET请求中有非 ASCII 字符,会在请求之前进行转码,POST不用,因为POST在Request body中,通过 MIME,也就可以传输非 ASCII 字符。
4.Get
1、请求是为了查找资源,HTML表单数据仅为了帮助搜索。
2、地址栏中直接发起的请求都是get请求,form表单的默认提交方式也是get请求,超链接发起的也是get请求;
5.Post
1、只有将form表单的提交方式改成post时发起的才是post请求。
2、有敏感数据
3、传输的数据不是普通字符
4、传输的数据非常多
5、请求是为了修改服务器资源
一般我们在浏览器输入一个网址访问网站都是GET请求。
登录一个网站、增加新闻评论是POST请求。
6.http发起get/post请求
#http请求 import requests #post请求 login_url="http://www.qabujiaban.com/user/login" data = {"username":"uuuu222都44","password":"WJHasb124*1"} res = requests.post(login_url,data) #def post(url, data=None, json=None, **kwargs): #url 请求地址 #data 请求参数,字典形式传参(dict) #json json格式的参数(需要转换) print("响应正文:",res.json()) print("响应头:",res.headers) print("响应Cookies",res.cookies)#此cookie不可用 #get请求 query_url = "http://www.qabujiaban.com/user/query" query_headers = {"Content-Type":"application/json;charset=UTF-8s"} rq = requests.get(url=query_url,headers=query_headers,cookies=res.cookies) #def get(url, params=None, **kwargs): #url 请求地址 #params 请求参数 #**kwargs 携带参数(指定) print("响应状态码:",rq.status_code) print("响应头:",rq.headers) print("请求头:",rq.request.headers) print("响应正文:",rq.text)#html格式 print("响应正文:",rq.json())#json格式
7.http发起get/post请求封装
#封装http请求 import requests class HttpRequest(): #需要的参数 #method:请求方式 #url:请求的url #param:请求参数 #headers:请求头 #cookie:请求的cookie值 def __init__(self, method, url, param=None, headers=None, cookie=None): self.method=method self.url=url self.param=param self.headers=headers self.cookie=cookie def http_request(self): if self.method.lower()=="post": return requests.post(self.url,self.param) elif self.method.lower()=="get": return requests.get(self.url,self.param,headers=self.headers,cookies=self.cookie) else: print("请求方式错误:{0}".format(self.method)) if __name__ == '__main__': login_url="http://www.qabujiaban.com/user/login" data = {"username":"uuuu222都44","password":"WJHasb124*1"} #登陆 res = HttpRequest("Post",login_url,data).http_request() print("登陆响应文本:",res.json())# cookie=res.cookies#获取cookie query_url = "http://www.qabujiaban.com/user/query" query_headers = {"Content-Type":"application/json;charset=UTF-8s"} #查询 rqs = HttpRequest("Get",query_url,headers=query_headers,cookie=cookie).http_request() print("查询响应文本:",rqs.json()) # print("Uu".lower())
出处:https://www.cnblogs.com/QAbujiaban/p/16993294.html
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
SQL Server -- 解决存储过程传入参数作为s
关于JS定时器的整理
JS中使用Promise.all控制所有的异步请求都完
js中字符串的方法
import-local执行流程与node模块路径解析流程
检测数据类型的四种方法
js中数组的方法,32种方法
前端操作方法
数据类型
window.localStorage.setItem 和 localStorage.setIte
如何完美解决前端数字计算精度丢失与数