Python 发起post/get请求(封装)

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 发起post/get请求(封装) - Python技术站

(0)
上一篇 2023年4月2日 下午4:12
下一篇 2023年4月2日 下午4:12

相关文章

  • Python单元测试框架unittest/反射

    1)写用例 TestCase 2)执行用例 1:TestSuite存储用例,2:TestLoader找用例,存储用例,存放指定的TestSuite 3)对比实际结果/期望结果,判定用例是否通过#断言Assert 4)出局测试报告TextTestRunner 1.测试类 import requests class HttpRequest(): def __in…

    2023年4月2日
    00
  • Python之open()/OS

    1.File对象数据读写与操作 #def open(file, mode=’r’, buffering=None, encoding=None, errors=None, newline=None, closefd=True): # known special case of open #file: 操作的文件 #mode:打开这个文件的模式 ‘r’ ope…

    2023年4月2日
    00
  • Python unittest+ddt+openpyxl+configparser

    1.技术介绍 框架:unittest 请求处理:requests excel数据处理:openpyxl 参数化:ddt 配置解析器:configparser 报告模板:HTMLTestRunnerNew.py(下载地址:https://pan.baidu.com/s/1w9AZU9AkIpxCYuzTto0EQA?pwd=1234) testdemo.xls…

    2023年4月2日
    00
  • Python3.7.3环境搭建

    Python3.7.3介绍 Python3.7.3安装(Win10) 到2019年初,Python3已经更新到了Python3.7.3,Python有两个大版本Python2和Python3,Python3是现在和未来的主流。 本文介绍Python3.7.3的安装步骤. 一、下载Python3.7.3 1.百度搜索Python,找到Python官网,点击进入…

    2023年4月2日
    00
  • python基础语法/数据类型/运算符

    1.标识符 # -*- coding:utf-8 -*- # @Time :2021/1/16 10:28 # @Author :QAbujiaban # @Email :wbxztoo@163.com # @File :basic.py 1 # 单行注释 这是单行注释 2 ”’多行注释”’ 这是多行注释 3 “””多行注释””” 这是多行注释 2.标识…

    2023年4月2日
    00
  • Python unittest数据处理ddt

    1.装饰器 #装饰器的官方定义: 装饰器本质上是一个Python函数(其实就是闭包),它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,装饰器的返回值也是一个函数对象。装饰器用于有以下场景,比如:插入日志、性能测试、事务处理、缓存、权限校验等场景。 2.ddt import unittest #引入ddt库 from ddt import ddt,…

    2023年4月2日
    00
  • Python参数解析器configparser

    1.configparser介绍 configparser是python自带的配置参数解析器。可以用于解析.config文件中的配置参数。ini文件中由sections(节点)-key-value组成 2.安装: pip install configparse 3.获取所有的section import configparser cf = configpar…

    2023年4月2日
    00
  • Pycharm2019.1.3 安装/激活/汉化

    完美流程,提供所有安装包激活码,解决pycharm安装激活问题!建议收藏!!! 1.安装 Pycharm2019.1.3 安装包下载地址: 链接:https://pan.baidu.com/s/10r-sMUJh7YKS_TP05NehCQ?pwd=1234 提取码:1234 1.1.双击运行电脑中已下载好的PyCharm.2019.1.3安装包。还没下载的…

    2023年4月2日
    00
合作推广
合作推广
分享本页
返回顶部