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())

 

标签: python

添加新评论