http请求的工具类

http请求的工具类_第1张图片
即将改造的代码:

import requests
#登陆
url='https://accounts.douban.com/j/mobile/login/basic'
message = {"name": "******", "password": "******", "remember": "false"}
header={"User-Agent":"Mozilla/5.0",
         "Sec-Fetch-Site":"same-origin",
         "X-Requested-With":"XMLHttpRequest",
         "Content-Type":"application/x-www-form-urlencoded",
         "Accept": "application/json",
         "Referer":"https://accounts.douban.com/passport/login_popup?login_source=anony",
        }
res =requests.post(url,data=message,headers=header)
print(res.status_code)
print(res.cookies)
#查看日记
url_chakan='https://www.douban.com/people/150969086/notes'
header={"User-Agent":"Mozilla/5.0",
         "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9",
         "Referer":"https://www.douban.com/people/150969086/notes",
        }
res2 =requests.get(url=url_chakan,headers=header,cookies=res.cookies)
print(res2.status_code)
print(res2.text)

从上边可以看出,很多都是一样的,所以可以写成类

import requests

class HttpRequest:
        """利用request封装get请求和post请求"""

        def http_request(self):
            """url:请求的地址http://XXX:port
               :param:传递的参数 非必填参数 字典的格式传递参数"""
            url ='https://accounts.douban.com/j/mobile/login/basic'
            data={"name": "****", "password": "****", "remember": "false"}
            header = {"User-Agent": "Mozilla/5.0",
                      "Sec-Fetch-Site": "same-origin",
                      "X-Requested-With": "XMLHttpRequest",
                      "Content-Type": "application/x-www-form-urlencoded",
                      "Accept": "application/json",
                      "Referer": "https://accounts.douban.com/passport/login_popup?login_source=anony",
                      }
            res=requests.post(url,data,headers=header,cookies=None)

            print("响应正文是:",res.text)
            print("响应状态码是:",res.status_code)

但是以上的代码不足之处是只能进行post请求,需要进行参数化,优化前:

import requests

class HttpRequest:
    """利用request封装get请求和post请求
   """
    def http_request(self,url,data,hearder=None,cookie=None):
        """url:请求的地址http://XXX:port
          :param:传递的参数 非必填参数 字典的格式传递参数"""
        res=requests.post(url,data,headers=header,cookies=cookie)#响应结果的消息实体
        return res #返回一个消息实体

if __name__=='__main__':
    url = 'https://accounts.douban.com/j/mobile/login/basic'
    data = {"name": "***", "password": "***", "remember": "false"}
    header = {"User-Agent": "Mozilla/5.0",
              "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9",
              "Referer": "https://www.douban.com/people/150969086/notes",
              }
    res=HttpRequest().http_request(url,data,header)
    print("登陆结果是:",res.text)

    #查询日记
    chaxun_url ='https://www.douban.com/people/150969086/notes'
    chaxun_res=HttpRequest().http_request(chaxun_url,header,res.cookies)
    print("充值结果是:",res.text)

请求参数化,优化后:

import requests

class HttpRequest:
    """利用request封装get请求和post请求
   """
    def http_request(self,url,method,data=None,cookie=None):
        """url:请求的地址http://XXX:port
          :param:传递的参数 非必填参数 字典的格式传递参数
          method:请求方法,支持post和get
          cookie:请求的时候传递的cookie值"""
        if method=='get':
            res = requests.get(url,data,cookies=cookie)
        else:
            res = requests.post(url,data)
        return res #返回一个消息实体

if __name__=='__main__':
    url = 'https://accounts.douban.com/j/mobile/login/basic'
    data = {"name": "***", "password": "***", "remember": "false"}
    header = {"User-Agent": "Mozilla/5.0",
              "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9",
              "Referer": "https://www.douban.com/people/150969086/notes"
              }
    res=HttpRequest().http_request(url,'post',data=data)
    print("登陆结果是:",res.text)

    #查询日记
    chaxun_url ='https://www.douban.com/people/150969086/notes'
    chaxun_res=HttpRequest().http_request(chaxun_url,'get',cookie=res.cookies)
    print("充值结果是:",chaxun_res.text)

你可能感兴趣的:(python接口测试)