--------requests--------
查看request:
res = requests.post(url=url,headers=headers,data=body_dic)
print(res.request.__dict__)
urlencode:
querystring = {"editor": "me", "delimiter": ",", "env": "1"}
response = requests.post(url,files=file,headers=header,cookies=COOKIE,params=querystring) #params指定url参数
--设置cookie
方法1:
sessionRequest = requests.session()
sessionRequest.post(url=url, headers=header, data=login_params)
c = requests.cookies.RequestsCookieJar() # 利用RequestsCookieJar获取
c.set('cookie-name', 'cookie-value')
sessionRequest.cookies.update(c)
cookies = sessionRequest.cookies.get_dict()
方法2:
response = requests.post(url=url, headers=header, data=login_params)
cookies = requests.utils.dict_from_cookiejar(response.cookies)
return cookies
--引用cookie
COOKIE = set_cookie()
res = requests.get(url=url, cookies=COOKIE, headers=header, verify=False) #verify=False,如果是https,可以使用此项忽略设置
#certificate verify failed: unable to get local issuer certificate,需要设置verify=False
--session
from requests import Session
session = Session()
def login(session):
header =
# 构造Post请求的form data
login_params =
url =
response = session.post(url=url, headers=header, data=login_params)
def checking_version2(version,session):
login(session)
url =
header =
body =
bodystr = json.dumps(body)
res = session.post(url=url, headers=header,data=bodystr,verify=False )
...
---form-data上传文件
def upload_init():
url = f'http://test2.mytest.com/deployConfig/upload'
header = {"Accept": "application/json, text/plain, */*", "Cache-Control": "no-cache",
"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36"}
# data = {'name':'csvFile'}
querystring = {"editor": "wWX651761", "delimiter": ",", "envKlass": "1", "envNode": "THA"}
'''原始内容:
------WebKitFormBoundaryHmfE93AP9wAS3TG5
Content-Disposition: form-data; name="csvFile"; filename="init.csv_dbc_for_devops.csv"
Content-Type: application/vnd.ms-excel
------WebKitFormBoundaryHmfE93AP9wAS3TG5--
'''
file = {
'csvFile':open('init.csv_dbc_for_devops.csv','rb'), #name为key,value为文件句柄(bytes格式)
'Content-Disposition': 'form-data',
'Content-Type': 'application/vnd.ms-excel',
'filename':"init.csv_dbc_for_devops.csv"
}
response = requests.post(url,files=file,headers=header,cookies=COOKIE,params=querystring)
# print(response.request.__dict__)
print(response)
print(response.content)
---键值对header转字典(requests所需格式)---
方式1:正则:
(.*):\s(.*)替换为"$1":"$2",
方式2:
def header_hanlder(header):
dic = {}
for line in header.split('\n'):
line = line.strip().replace(': ', ':', 1)
li = line.split(':', maxsplit=1)
dic[li[0]] = li[1]
# dic = yaml.load(header)
return dic
注意:1,http和windows使用'\r\n'作为换行分隔符,linux使用'\n'作为行分隔符
2,URL中特殊字符:
特殊含义 十六进制
+ 表示空格(在URL中不能使用空格) %2B
/ 分隔目录和子目录 %2F
? 分隔实际的URL和参数 %3F
# 表示书签 %23
& URL中指定的参数间的分隔符 %26
= URL中指定的参数的值 %3D
--------urllib------------
--urllib.parse
urlencode:
In [1]: from urllib import parse
In [2]: data = {'a':1,'b':2}
In [3]: parse.urlencode(data)
Out[3]: 'a=1&b=2'
urlparse:
In [7]: url = 'https://docs.python.org/3.5/search.html?q=parse&check_keywords=yes&area=default'
In [8]: parse.urlparse(url)
Out[8]: ParseResult(scheme='https', netloc='docs.python.org', path='/3.5/search.html', params='', query='q=parse&check_keywords=yes&area=default', fragment='')