作者:cao.dingzheng
post是常见的http请求方式之一,而post常见的http请求入参方式一般有文件入参、包含base64编码的json入参、普通入参。这里就针对这三种常见入参方式进行Python的requests库post请求展示。
在http协议中,post提交的数据必须放在消息主体中,但是协议中并没有规定必须使用什么编码方式,从而导致了提交方式的不同。服务端根据请求头中的content-type字段来获知请求中的消息主体是用何种方式进行编码,再对消息主体进行解析。这里主要针对于下面两种编码方式:
- application/json :以json串提交数据。
- multipart/form-data:上传文件。
第一种请求入参:普通入参。这里展示了文字入参方法,也有如果想要对展示的结果utf-8编码格式进行转换。
#coding=utf-8 import requests url = ‘请求地址‘ header = {‘content-type‘:‘application/json‘} t = "心灵安顿了,平衡了,生命也就快乐了,无憾了,如眼前一幅静美的画卷,清幽,温馨与宁静。" data = {"text":t} #这里需要注意data和json的区别 response = requests.post(url=url,headers=header,json=data) #对请求结果进行编码转换,转换成汉字 request = response.text.encode(‘utf-8‘).decode(‘unicode_escape‘) #不转换返回的结果 print(response.text) #转换后返回的结果 print(request)
返回结果为:
{"value":{"\u60c5\u611f\u503e\u5411":"\u6b63\u5411","\u6d88\u6781\u6982\u7387":9.72836e-06,"\u79ef\u6781\u6982\u7387":0.99999,"\u8f93\u5165\u6587\u672c":"\u5fc3\u7075\u5b89\u987f\u4e86\uff0c\u5e73\u8861\u4e86\uff0c\u751f\u547d\u4e5f\u5c31\u5feb\u4e50\u4e86\uff0c\u65e0\u61be\u4e86\uff0c\u5982\u773c\u524d\u4e00\u5e45\u9759\u7f8e\u7684\u753b\u5377\uff0c\u6e05\u5e7d\uff0c\u6e29\u99a8\u4e0e\u5b81\u9759\u3002"}} {"value":{"情感倾向":"正向","消极概率":9.72836e-06,"积极概率":0.99999,"输入文本":"心灵安顿了,平衡了,生命也就快乐了,无憾了,如眼前一幅静美的画卷,清幽,温馨与宁静。"}} Process finished with exit code 0
第二种请求入参:将图片转换成base64格式并且进行json入参。
# coding=utf-8 import requests,base64 photo = r‘D:\test\wjj.jpg‘#图片路径 with open(photo,‘rb‘) as f: base64_data = base64.b64encode(f.read()) s = base64_data.decode() url = ‘请求url‘#请求地址 data = {"imageBase64": s} header = {‘Content-Type‘: ‘application/json‘} response = requests.post(url=url,headers=header,json=data) print(response.text)
第三种请求入参:带文件入参,如csv,txt,zip等。
# coding=utf-8 mport requests from requests_toolbelt.multipart.encoder import MultipartEncoder filename = r‘D:\test\OLT_DEMO.csv‘ file = open(filename,‘rb‘) url = ‘请求地址‘ data = MultipartEncoder( fields={ ‘OLT_INFO‘: (‘OLT_DEMO.csv‘, file, ‘application/octet-stream‘) } ) header={} header[‘content-type‘] = data.content_type response = requests.post(url=url,headers=header,data=data) print(response.text)
Python发送post请求的三种入参-文件、base64、普通入参
原文:https://www.cnblogs.com/ustcinfo-qc/p/13879335.html