python requests实例

本文介绍了一个名为HandleRequest的类,用于处理不同类型的参数(如JSON、文件、表单数据等)并发送HTTP请求。它通过requests库实现,可以处理POST请求,根据参数类型自动转换并捕获错误。
摘要由CSDN通过智能技术生成
import requests
import json

class HandleRequest:
    param_type_dict = {
        'form': 'application/x-www-form-urlencoded',
        'data': 'application/x-www-form-urlencoded',
        'json': 'application/json',
        'file': 'multipart/form-data',
        'files': 'multipart/form-data',
        'params': 'query string',
        'param': 'query string',
        None: 'NoneType',}

    def init(self):
        # 创建会话对象
        self.session = requests.Session()

    def handle_param(self, param_value):
        if isinstance(param_value, str):
            try:
                param_value = json.loads(param_value)
            except Exception:
                param_value = eval(param_value)
        return param_value

    def send(self, url, method="POST", param_type=None, param_data=None, **kwargs):
        """
        :param url: 请求url
        :param method: 请求方法
        :param_type: q请求参数类型
        :param kwargs: headers请求头字典, cookies等其他可变参数
        :return: Response对象
        """
        # 如果param_type为字符串,那么转化为小写,否则赋值为None
        param_type = param_type.lower() if isinstance(param_type, str) else None
        # 判断param_type是否为param_type_dict中的键值
        if param_type not in self.param_type_dict :
            raise Exception(f"param_type值错误")
        if param_type == "json":
            kwargs["json"] = self.handle_param(param_data)
        elif param_type in ["file", "files"]:
            kwargs["files"] = self.handle_param(param_data)
        elif param_type in ["data", "form"]:
            kwargs["data"] = self.handle_param(param_data)
        elif param_type in ["params", "param"]:
            kwargs["params"] = self.handle_param(param_data)

        if method is None:
            method = "POST"
        return self.sesson.requests(method=method, url=url, **kwargs)

    def handle_return(self, response):
        if re.match(r'^2', str(response.status_code)):
            res = AttrDict(**json.loads(response.text))
            return res
        else:
            raise Exception(f"请求错误,请求响应为{response.status.code}")

if __name__ == '__main__':
    a = HandleRequest()
    res = a.send(url, method, param_type, param_data)
    res = a.handle_return(res)
    if res['ret']:
        print('成功')
    else:
        print(f"失败:{res['errMsg']}")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值