发送post请求
r = requests.post("http://pythontab.com/postTest", data = {"key":"value"})
以上得知,post请求参数是以data关键字参数来传递的。
现在的data参数传递的是字典,我们也可以传递一个json格式的数据,如下:
>>> import json
>>> import requests
>>> payload = {"key":"value"}
>>> r = requests.post("http://pythontab.com/postTest", data = json.dumps(payload))
由于发送json格式数据太常见了,所以在Requests模块的高版本中,又加入了json这个关键字参数,可以直接发送json数据给post请求而不用再使用json模块了,见下:
>>> payload = {"key":"value"}
>>> r = requests.post("http://pythontab.com/postTest", json=payload)
如果我们想post一个文件怎么办呢?这个时候就需要用到files参数了:
>>> url = 'http://pythontab.com/postTest'
>>> files = {'file': open('report.xls', 'rb')}
>>> r = requests.post(url, files=files)
>>> r.text
我们还可以在post文件时指定文件名等额外的信息:
>>> url = 'http://pythontab.com/postTest'
>>> files = {'file': ('report.xls', open('report.xls', 'rb'), 'application/vnd.ms-excel', {'Expires': '0'})}
>>> r = requests.post(url, files=files)
tips:强烈建议使用二进制模式打开文件,因为如果以文本文件格式打开时,可能会因为“Content-Length”这个header而出错。