常规的Form Data
大部分的Form Data 可以直接都是可以通过正常的post请求进行提交的
import requests
headers = {
'自己设置的请求头键': '自己设置的请求头键',
'Content-Type': '网页接受的数据类型'
}
form_data = {
'对应的键1':'对应的值1',
'对应的键2':'对应的值2',
}
response = requests.post('需要访问的url地址',data=form_data,headers=headers)
response.close()
特殊的Form Data
但是有些Form Data 里面的数据是很繁琐的,有一些是以下结构的数据
decode后的数据是看着比较符合json的格式的
但是点击【view source】后就发现其根本不是常规的数据,下图就是source数据的样子
每一个参数,都会已一定固定的格式为开头
例如:
------WebKitFormBoundaryxxxxxxx
Content-Disposition: form-data; name="upload_sign"
如果是这样的参数,那就不能用上面提及的方法去发送post请求
解决的办法
通过【MultipartEncoder】库来创建一个form_data对象
from requests_toolbelt import MultipartEncoder
headers = {
'自己设置的请求头键': '自己设置的请求头键',
}
# 准备需要post的数据
request_data = {
'upload_sign': signature,
'forbid_override': 'false',
}
# 这个按照自己需要的来设置
boundary = '----WebKitFormBoundary1hdxbOXZ2CT7I7gW'
form_data = MultipartEncoder(fields=request_data, boundary=boundary)
headers['Content-Type'] = form_data.content_type
response = requests.post('需要访问的url地址',data=form_data,headers=headers)
response.close()