HTTP協議規定POST請求的數據必須放在消息主體中,但是並沒有規定編碼方式,因此可以使用多種方式對其進行編碼。
服務器端通過請求頭的中Content-Type字段來獲知請求的消息主體以何種方式編碼。具體的編碼方式包括:
application/x-www-form-urlencoded
application/json
multipart/form-data
示例代碼:
import requests
import json
def requests_form():
url = 'http://httpbin.org/post'
data = {'k1':'v1', 'k2':'v2'}
response = requests.post(url, data)
return response
def requests_json():
url = 'http://httpbin.org/post'
data = s = json.dumps({'k1': 'v1', 'k2': 'v2'})
response = requests.post(url, data)
return response
def requests_multipart():
url = 'http://httpbin.org/post'
files = {'file': open('requests.txt', 'rb')} # requests.txt中包含一句“Hey requests”
response = requests.post(url, files=files)
return response
if __name__ == "__main__":
response1 = requests_form()
response2 = requests_json()
response3 = requests_multipart()
print("From形式提交POST請求:")
print(response1.text)
print("Json形式提交POST請求:")
print(response2.text)
print("Multipart形式提交POST請求:")
print(response3.text)