python基础之类与对象的request模块、代码封装

2019-10-01  本文已影响0人  DayBreakL

request模块

发送http请求

import requests
#get请求
url="http://v.juhe.cn/laohuangli/d"
data={"date":"2019-09-14","key":"3078e34cb750268b324e6c982726d00f"}
response=requests.get(url) #返回一个消息实体
print(response) #<Response [200]> 消息实体 响应状态码、响应头、响应正文全部封装在里面
print("响应状态码:",response.status_code)
print("响应头:",response.headers)
print("响应正文:",response.text)

#post请求,该接口支持get和post
url_post="http://v.juhe.cn/laohuangli/d"
data={"date":"2019-09-14","key":"3078e34cb750268b324e6c982726d00f"}
response_1=requests.post(url,data) #返回一个消息实体
print("响应状态码:",response_1.status_code)
print("响应头:",response_1.headers)
print("响应正文1:",response_1.text,type(response_1.text)) #<class 'str'>
print("响应正文2:",response_1.json(),type(response_1.json())) #<class 'dict'>

#cookie
print("cookie:",response_1.cookies) #类字典形式,可以通过key获取值
print(response_1.cookies["aliyungf_tc"])

#headers
#请求头,响应中是拿不到请求头的,所以需要加.request
print("headers:",response_1.request.headers) 
#{'User-Agent': 'python-requests/2.22.0'},由requests发出http请求
print("headers中的User-Agent:",response_1.request.headers["User-Agent"])
#篡改请求头中的参数,比如:某些网站限制只能通过浏览器发送请求,篡改User-Agent,伪装成浏览器
header={"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6)"}
response_2=requests.post(url,data,headers=header)
#篡改成功,伪装成浏览器发送请求
print("篡改后的User-Agent:",response_2.request.headers["User-Agent"]) 

代码的封装

新建一个package,命名为API_AUTO开始我们接口自动化之旅,该package下新建一个名为tools的package,新建一个http_request模块,利用request封装get请求和post请求。tools作为工具类,之后存放我们抽象出来的

"""
利用request封装get请求和post请求
"""
class HttpRequest:
    '''
    url:请求的地址 http:ip:port/path
    param:传递的参数 非必填参数 字典格式传递参数
    '''
    def http_request(self):
        url="http://v.juhe.cn/laohuangli/d"
        data={"date":"2019-09-14","key":"3078e34cb750268b324e6c982726d00f"}
        response_1=requests.post(url,data) #返回一个消息实体
        print("响应状态码:",response_1.status_code)
        print("响应头:",response_1.headers)
        print("响应正文:", response_1.json())

# 测试
if __name__ == '__main__':
    HttpRequest().http_request()
import requests
class HttpRequest:
    '''
    利用request封装get请求和post请求
    '''

    def http_request(self,url,data,method,cookie=None):
        '''
        :param
        @url:请求的地址 http:ip:port/path
        @param:传递的参数 非必填参数 字典格式传递参数
        :return
        返回一个消息实体
        '''
        if method=="get":
            response = requests.get(url,data,cookie)
        else:
            response=requests.post(url,data,cookie)
        return response #函数的返回是一个消息实体

# 测试
if __name__ == '__main__':
    url = "http://v.juhe.cn/laohuangli/d"
    data = {"date": "2019-09-14", "key": "3078e34cb750268b324e6c982726d00f"}
    res=HttpRequest().http_request(url,data,"post")
    print("响应状态码:", res.status_code)
    print("响应头:", res.headers)
    print("响应正文:", res.json())
    print("请求头:",res.request.headers)

上一篇 下一篇

猜你喜欢

热点阅读