python接口之request測試:以json格式發送post請求,.json方法,查看響應結果的情況


json和dict

python中的dict類型要轉換為json格式的數據需要用到json庫:

import json   

<json> = json.dumps(<dict>) 

<dict> = json.loads(<json>) 


需要注意的是python中並沒有json類型這一說法,通過json.dumps(<dict>)轉換的字典對象,最后得到的是一個字符串對象,也就是說,在python中json格式的數據實際上就是一個字符串

>>> j = json.dumps(<dict>)

>>> type(j) <class 'str'>

 

雖說json格式的數據在python中是以字符串的類型存在的,但是通過str(<dict>)工廠函數所得到的結果同json.dumps(<dict>)方法所得到的結果是不相同的

>>> 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的區別在於引號。對於可以作為json.loads(<str>)參數對象的字符串,除了要滿足字典類型的格式外,所有的字符串對象必須是雙引號

requests.post()

在通過requests.post()進行POST請求時,傳入報文的參數有兩個,一個是data,一個是json。

常見的form表單可以直接使用data參數進行報文提交,而data的對象則是python中的字典類型;

而在最新爬蟲的過程中遇到了一種payload報文,是一種json格式的報文,因此傳入的報文對象也應該是格式的;

這里有兩種方法進行報文提交:

import requests 
import json   

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參數會自動將字典類型的對象轉換為json格式 
requests.post(url, json=data)

其它

在requests.get()方法中可以使用params參數來構建url 有時候請求得到的結果可能呈現亂碼的狀態,可以通過resp.encoding屬性查看網頁編碼方式,同時可以在獲取resp.text之前對resp.encoding='utf-8'賦值,這樣再次獲取的resp.text則會使用我們要求的編碼方式。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM