欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python中Requests發(fā)送json格式的post請(qǐng)求方法

 更新時(shí)間:2022年09月08日 14:48:05   作者:測(cè)試工程師Jane  
這篇文章主要介紹了python中Requests發(fā)送json格式的post請(qǐng)求方法,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,感興趣的朋友可以參考一下

前言

問(wèn)題:

做requests請(qǐng)求時(shí)遇到如下報(bào)錯(cuò):

{“code”:“500”,“message”:"JSON parse error: Cannot construct instance of com.bang.erpapplication.domain.User (although at least one Creator exists): no String-argument constructor/factory method to deserialize from String value

原因:
Requests.post源碼如下:

post請(qǐng)求傳body的參數(shù)有兩種:data和json,那么我們來(lái)看一下python各種數(shù)據(jù)結(jié)構(gòu)做為body傳入的表現(xiàn)

1.普通string類型

string2 = "2222222"
r = requests.post("http://httpbin.org/post", data=string2)
print(r.text)

返回的結(jié)果:

2.string內(nèi)是字典的

import requests
string = "{'key1': 'value1', 'key2': 'value2'}"
r = requests.post("http://httpbin.org/post", data=string)
print(r.text)

返回結(jié)果:

3.元組(嵌套列表或者)

import requests
string = (['key1', 'value1'],)
r = requests.post("http://httpbin.org/post", data=string)
print(r.text)

返回結(jié)果:

4.字典

5.json

import requests
import json

dic = {'key1': 'value1', 'key2': 'value2'}
string = json.dumps(dic)
r = requests.post("http://httpbin.org/post", data=string)
print(r.text)

返回結(jié)果:

6.傳入非嵌套元組或列表

string = ['key1','value1']
r = requests.post("http://httpbin.org/post", data=string)
print(r.text)

返回報(bào)錯(cuò):

7.以post(url,json=data)請(qǐng)求

dic = {'key1': 'value1', 'key2': 'value2'}
r = requests.post("http://httpbin.org/post", json=dic)
print(r.text)

運(yùn)行結(jié)果:

由以上運(yùn)行結(jié)果可以看出:

轉(zhuǎn)入?yún)?shù)body數(shù)據(jù)類型headers(Content-type)
datastringtext/plain純文本(默認(rèn))
data元組(嵌套)text/plain純文本(默認(rèn))–轉(zhuǎn)為dict
data元組(非嵌套)報(bào)錯(cuò),不支持
data列表報(bào)錯(cuò),不支持
data字典application/x-www-form-urlencoded(key/value表單)
datajson(字符串但!= python string)text/plain純文本(默認(rèn))-要再做驗(yàn)證
json字典(源碼內(nèi)轉(zhuǎn)成了json)application/json(json串)

現(xiàn)在讓我們來(lái)看一下源碼:

當(dāng)轉(zhuǎn)入json=data時(shí):

當(dāng)輸入data=data時(shí):

結(jié)論:

所以當(dāng)你請(qǐng)求的data=dict時(shí),未轉(zhuǎn)為JSON的情況下,requests默認(rèn)以表單形式key/value形式提交請(qǐng)求

setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=utf-8");

以json=dict形式請(qǐng)求時(shí),以application/json格式發(fā)出請(qǐng)求

setRequestHeader("Content-type","application/json; charset=utf-8");

以data=其它請(qǐng)求時(shí),默認(rèn)就按純文本格式請(qǐng)求:

setRequestHeader("Content-type", "text/plain; charset=utf-8");

到此這篇關(guān)于python中Requests發(fā)送json格式的post請(qǐng)求實(shí)操的文章就介紹到這了,更多相關(guān)python post請(qǐng)求內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論