1 #!/usr/bin/env python3
2 # -*- coding: utf-8 -*-
3 # @Time : 2020/03/18 23:37
4 # @Author : Tang Yiwei
5 # @Email : 892398433@qq.com
6 # @File : httprun.py
7 # @Software: PyCharm
8
9 import requests
10 from lib.logger import logger
11 from requests.auth import HTTPBasicAuth
12 from requests.exceptions import ReadTimeout,HTTPError,RequestException
13 try:
14 from requests.packages import urllib3
15 urllib3.disable_warnings()
16 except:
17 import logging
18 logging.captureWarnings(True)
19
20 class HttpRun:
21
22 @staticmethod
23 def http_run(method=None,url=None,data=None,headers=None,files=None,cookies=None,verify=None,cert=None,proxies=None,timeout=20,auth=None):
24 """
25 :param method:请求的方式,get、post等等
26 :param url: 请求的地址 http://xxxx:post
27 :param data:传递的参数
28 :param headers:传递的请求头
29 :param files:上传的文件,例如files={'file':open('favicon.ico','rb')},传二进制文件
30 :param cookie:请求时传递的cookie值
31 :param verify:是否忽略SSLError,False为忽略,True为显示
32 :param cert:指定证书文件,需要有crt和key文件,并且指定他们的路径,例如cert=('/path/server.crt','/path/key')
33 :param proxies:设置代理,例如proies = {"http":"http://10.10.1.10:3128","https":"http://10.10.1.10:1080"}
34 :param timeout:设置请求的超时时间,连接和读取的总时长,例如timeout=1
35 :param auth:用户认证,auth=HTTPBasicAuth('username','password')
36 :return:
37 """
38 try:
39 if method.strip().lower() == 'get' or method == None:
40 res = requests.get(url=url,params=data,headers=headers,cookies=cookies,verify=verify,cert=cert,proxies=proxies,timeout=timeout,auth=auth)
41 elif method.strip().lower() == 'post':
42 res = requests.post(url=url,data=data,headers=headers,cookies=cookies,files=files,verify=verify,cert=cert,proxies=proxies,timeout=timeout,auth=auth)
43 else:
44 raise Exception("Unsupported requests")
45 return res
46 except ReadTimeout as e:
47 logger.logger.exception("time out,{0}".format(e))
48 except HTTPError as e:
49 logger.logger.exception("http error,{0}".format(e))
50 except RequestException as e:
51 logger.logger.exception("requests error,{0}".format(e))
52 except Exception as e:
53 logger.logger.exception("other error,{0}".format(e))