python request post json_python接口之request测试:以json格式发送post请求,.json方法,查看响应结果的情况...
json和dict
python中的dict類型要轉(zhuǎn)換為json格式的數(shù)據(jù)需要用到j(luò)son庫:
importjson = json.dumps() = json.loads()
需要注意的是python中并沒有json類型這一說法,通過json.dumps()轉(zhuǎn)換的字典對(duì)象,最后得到的是一個(gè)字符串對(duì)象,也就是說,在python中json格式的數(shù)據(jù)實(shí)際上就是一個(gè)字符串
>>> j = json.dumps()>>> type(j)
雖說json格式的數(shù)據(jù)在python中是以字符串的類型存在的,但是通過str()工廠函數(shù)所得到的結(jié)果同json.dumps()方法所得到的結(jié)果是不相同的
>>> d = {'a': 1, 'b': 2}>>> d_d = {"a": 1, "b": 2}>>> string =str(d)>>> string_d =str(d_d)>>> js =json.dumps(d)>>> js_d =json.dumps(d_d)>>> string ==string_d
True>>> js =js_d
True>>> string ==js
False>>>string"{'a': 1, 'b': 2}"
>>>js'{"a": 1, "b": 2}'
可以看出來string和js的區(qū)別在于引號(hào)。對(duì)于可以作為json.loads()參數(shù)對(duì)象的字符串,除了要滿足字典類型的格式外,所有的字符串對(duì)象必須是雙引號(hào)。
requests.post()
在通過requests.post()進(jìn)行POST請(qǐng)求時(shí),傳入報(bào)文的參數(shù)有兩個(gè),一個(gè)是data,一個(gè)是json。
常見的form表單可以直接使用data參數(shù)進(jìn)行報(bào)文提交,而data的對(duì)象則是python中的字典類型;
而在最新爬蟲的過程中遇到了一種payload報(bào)文,是一種json格式的報(bào)文,因此傳入的報(bào)文對(duì)象也應(yīng)該是格式的;
這里有兩種方法進(jìn)行報(bào)文提交:
importrequestsimportjson
url= "http://example.com"data= {'a': 1,'b': 2}
#1
data = json.dumps(datas)
headers = {'Content-Type': 'application/json'}response = requests.post(url, data=data, headers=headers)
#2-json參數(shù)會(huì)自動(dòng)將字典類型的對(duì)象轉(zhuǎn)換為json格式
requests.post(url, json=data)
其它
在requests.get()方法中可以使用params參數(shù)來構(gòu)建url 有時(shí)候請(qǐng)求得到的結(jié)果可能呈現(xiàn)亂碼的狀態(tài),可以通過resp.encoding屬性查看網(wǎng)頁編碼方式,同時(shí)可以在獲取resp.text之前對(duì)resp.encoding='utf-8'賦值,這樣再次獲取的resp.text則會(huì)使用我們要求的編碼方式。
總結(jié)
以上是生活随笔為你收集整理的python request post json_python接口之request测试:以json格式发送post请求,.json方法,查看响应结果的情况...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java压测请求线程数_程序员撕开京东
- 下一篇: python windows 消息通讯_