--------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
--Reference cookie COOKIE = set_cookie()
res = requests.get(url=url, cookies=COOKIE, headers=header, verify=False) #verify=False, if it is https, you can use this to ignore the setting
#certificate verify failed : unable to get local issuer certificate, need to set 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)
---Key-value pair header to dictionary (requests format required)---
Method 1: Regular:
(.*):\s(.*) is replaced with "$1":"$2",
Method 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
Note: 1. http and windows use'\r\n' as line break separator, linux uses'\ n'as line separator
2, special characters in URL:
Special meaning Hexadecimal
+ means space (spaces cannot be used in the URL) %2B
/ separate directory and subdirectory %2F
? Separate actual URL and parameters %3F
# means bookmark %23
& the separator between the parameters specified in the URL %26
= The value of the parameter specified in the 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='')