脚本宝典收集整理的这篇文章主要介绍了requests提交form表单,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
对接接口,发现对方的接口使用form-data进行数据提交,直接使用requests库的data参数对接,会报参数错误:
params = { 'timestamp':timestamp, 'nonce':nonce, 'apikey':APIKEY, 'signature': signature } data = { 'name': name, 'phone': phone, 'idnum': idnum, 'PRoducts': [201,] } resp = requests.post(URL, data=data, params=params, verify=False, timeout=10)
这一块Requests包做的不是很好,做法具体如下:一种是手动组建form-data并加上headers;另一种是通过files参数传递form-datal;
# 方案一:params = { 'timestamp':timestamp, 'nonce':nonce, 'apikey':APIKEY, 'signature': signature}payload = """------webkitFormBoundary7MA4YWxkTrZu0gWrnContent-DisposITion: form-data; name="phone"nn{}rn------WebKitFormBoundary7MA4YWxkTrZu0gWrnContent-Disposition: form-data; name="idnum"nn{}rn------WebKitFormBoundary7MA4YWxkTrZu0gWrnContent-Disposition: form-data; name="name"rnrn{}rn------WebKitFormBoundary7MA4YWxkTrZu0gWrnContent-Disposition: form-data; name="products"rnrn {}rn------WebKitFormBoundary7MA4YWxkTrZu0gW--""".format(phone, idnum, name, [201,])headers = { "content-tyPE": "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW"}resp = requests.post(URL, data=payload, params=params, verify=False, timeout=10, headers=headers)# 方案二:import jsonparams = { 'timestamp':timestamp, 'nonce':nonce, 'apikey':APIKEY, 'signature': signature}data = { 'name':(None, name), 'phone': (None, str(phone)), 'idnum': (None, idnum), 'products': (None, json.dumps([201,]))}resp = requests.post(URL, files=data, params=params, verify=False, timeout=10)print(resp.status_code)print(resp.request.url)print(resp.request.body)print(resp.text )
转自:https://www.freesion.COM/article/248781736/
以上是脚本宝典为你收集整理的requests提交form表单全部内容,希望文章能够帮你解决requests提交form表单所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。