2.12 python 发送request请求方法封装(依赖requests)

一、  get请求 ,param带参和不带参

# url = "xxxxxx"

# 注册接口
# register_utl = url + "/member/register"
# 1.  发送get请求,param是一个字典类型数据
# 构建参数
# payloads = {'mobilephone': '15934815820', 'pwd': '123qwe', 'regname': 'Lujier'}
# r = requests.get(url=register_utl, params=payloads)

# baidu_url = "https://www.baidu.com"
# r = requests.get(url=baidu_url, verify=False)

# 2. 获取响应状态码
# print(r.status_code)
# 3. 获取cookies
# print(r.cookies)
# print(r.headers)
# print(r.request)
# 4. 获取编码格式和文本类型
# print(r.headers['content-type'])
# print(r.encoding)
# 查看响应内容
#  5. 查看接口响应文本
# print(r.text)
#  6. 获取字节流的数据,字节形式的需要使用decode进行解码
# contents = r.content
# html = contents.decode("utf-8")  # 编码格式使用utf-8
# print(contents)

 

二 、 post请求

url = "xxxxxxxxxxxxi"

# 注册接口
register_utl = url + "/member/register"
# 2. 使用post请求
# 构建参数
payloads = {'mobilephone': '15934815808', 'pwd': '123qwe', 'regname': 'Lujier'}
r = requests.post(url=register_utl, data=payloads)
print(r.text)

# 登录接口
login_url = url + "/member/login"
payloads = {'mobilephone': '15934815808', 'pwd': '123qwe'}
r = requests.post(url=login_url, data=payloads)
print(r.text)

# 充值接口:应在登录后才可充值
recharge_url = url + "/member/recharge"
payloads = {'mobilephone': '15934815808', 'amount': 100}
r = requests.post(url=recharge_url, data=payloads)
print(r.text)

 三. 针对get/post请求封装接口发送请求方法

import logging
import requests
from requests import Session


class MyRequest:

    def sendRequest(self, url, method, params=None, data=None,
                    headers=None, json=None, cookies=None,timeout=10):
        '''
        :param url: 接口请求地址
        :param method: 接口请求方法:get/post或其他
        :param params: url额外参数,字典或字节流格式(多用于字典格式,字节流的话,多用于文件操作)
        :param data:   字典、字节序列或文件对象(多用于字典)
        :param headers: 请求头信息,字典形式
        :param json:    JSON格式的数据,作为参数传递
        :param cookies:  cookies信息,str类型
        :param  timeout:   设定超时时间,秒为单位
        :return: requests.Response.json()
        '''
        
        responseResult=None
        new_method = method.lower()
        if new_method == 'get':
            logging.info("正在发送get请求,请求地址:{}, 请求参数{}".format(url, params))
            responseResult = requests.get(url=url, params=params, headers=headers, timeout=timeout)
        elif new_method == "post":
            if json:
                logging.info("正在发送请求,请求地址:{}, 请求参数{}".format(url, json))
                responseResult = requests.post(url=url, json=json, headers=headers, cookies=cookies,timeout=timeout)
            else:
                logging.info("正在发送请求,请求地址:{}, 请求参数{}".format(url, data))
                responseResult = requests.post(url=url, data=data, headers=headers, cookies=cookies,timeout=timeout)
        return responseResult.json()

四,存在问题

 post方法案例充值接口返回不符合预期:

  

 原因

由于是代码,在登录之后,request.get/post请求之后,再进行充值,却发现依旧不能充值,提示:先登录
原因: 因为没有记录cookie信息,在登录之后,我们并没有获取cookie信息并存起来,在进行充值时,没有传cookie信息,所以就身份验证失败,充值不成功
解决方案:2种,见下

解决方法:
 1.   手动提取cookies,手动传入另一个接口

2. Session发送请求,自动保留cookies信息

           见下一节 2.13 《Session请求发送》 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值