IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> python_记录问题HTTP请求的封装 -> 正文阅读

[网络协议]python_记录问题HTTP请求的封装

1.首先封装post请求:

? ? ? ? 这里有一个小坑就是你的data数据,需要进行转换,需要安装一个demjson库,进行格式转换,如果直接传入数据没有问题的话就不用转换。这里我做了一个小小的判断,如果是表单形式的数据就不用转换数据直接使用就行。

import requests
import json
import demjson
class RunMain():

    def send_post(self, url, data, header,cookie):
        if type(data) == type({}):  # 传入的请求体为字典类型
            if header['Content-Type'] == 'application/json':
                data = demjson.encode(data)
            elif header['Content-Type'] == 'application/x-www-form-urlencoded':
                data = data
            else:
                pass  # 如果是其他的Content-Type类型另做处理
            result = requests.post(url=url, data=data, headers=header, cookies=cookie)
            re=result
        try:
            return re.json()
        except:
            return re.json()
        else:
            print('请求体错误,请更改请求体为字典类型')

2.获取cookies值的封装:

这里我封装的是post请求获取cookie,可以参考,cookies的值是以字典形式进行传输的,可以在下面的请求进行引用cookies。

 def send_post_cookie(self,url,header,data):
            res = requests.post(url=url, data=demjson.encode(data), headers=header)
            return res.cookies.get_dict()  #获取cookies

3.封装get,put, delete请求:

? ? ? ?get,put, delete,?get请求相对于来说就简单点,大致相同

 def send_get(self, url, data, cookie):
        result = requests.get(url=url, params=None, cookies=cookie)
        res = result
        return res.json()

    def send_put(self, url, header, data, cookie):
        if type(data) == type({}):
            if header['Content-Type'] == 'application/json':
                data =demjson.encode(data)
            elif header['Content-Type'] == 'application/x-www-form-urlencoded':
                data = data
            else:
                pass
            result = requests.put(url=url, headers=header, data=data, cookies=cookie)
            re = result
            try:
                return re.json()
            except:
                return re.json()
        else:
            print('请求体错误,请更改请求体为字典类型')

    def send_put_cookie(self,url,header,data):
        res = requests.put(url=url, data=demjson.encode(login_data), headers=header)
        return res.cookies.get_dict()  #获取cookies

    def send_delete(self,url,params, cookies=None):
         re= None
         if cookies != None:
             re = requests.delete(url=url, params=params, cookies=cookies)
         else:
             re = requests.delete(url=url, params=params)
         return re.json()
        #else:
            #print('请求体错误,请更改请求体为字典类型')

4,整体封装

  def run_main(self, method, url=None, data=None, header=None,cookies=None,params=None):  # 定义一个run_main函数,通过传过来的method来进行不同的get或post请求
        result = None
        if method == 'post':
            result = self.send_post(url, data, header,cookies)
        elif method == 'get':
            result = self.send_get(url, params, cookies,)
        elif method == 'put':
            result = self.send_put(url, header, data,cookies)
        elif method == 'delete':
            result = self.send_delete(url,data,cookies)
        elif method == 'put_cookie':
            result = self.send_put_cookie(url, header, data)
        elif method == 'post_cookie':
            result = self.send_post_cookie(url, header, data)
        else:
            print("method值错误!!!")
        return result

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-09-14 13:44:27  更:2021-09-14 13:47:03 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年9日历 -2024/9/21 6:53:34-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码