post請求中json和data
post請求中,可以使用data傳遞參數,也可以使用json傳遞參數,那么這兩種方式有什么區別呢?
如果參數為JSON數據,可以直接傳入json參數,它將自動編碼並將Content-Type的置為application/jsonpayload = {'key1': 'value1', 'key2': 'value2'}
r = requests.post("https://httpbin.org/post", json=payload)
print(r.text)
如果data傳遞的參數為字符串,例如【json.dumps(payload)】,則request對參數進行url編碼,Content-Type的值為None,所以data傳字符串時,一定要在header中指定Content-Type
payload = {'key1': 'value1', 'key2': 'value2'}
headers={"Content-Type": "application/json"}
r = requests.post("https://httpbin.org/post", headers=headers,data=json.dumps(payload))
print(r.text)
如果data傳遞的是字典、元組組成的列表或列表作為值的字典,則request對參數進行url編碼,Content-Type的值為application/x-www-form-urlencoded
# 字典 payload1 = {'key1': 'value1', 'key2': 'value2'} r = requests.post("https://httpbin.org/post", data=payload1) # 元組組成的列表 payload2 = [('key1', 'value1'), ('key1', 'value2')] r = requests.post("https://httpbin.org/post", data=payload2) # 列表作為值的字典 payload3 = {'key1': ['value1', 'value2']} r = requests.post("https://httpbin.org/post", data=payload3)
轉載:https://www.cnblogs.com/lexus168/p/12678182.html
