一、 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请求发送》