Requests模塊獲取響應內容
響應包括響應行、響應頭、響應正文內容,這些返回的響應信息都可以通過Requests模塊獲取。這些 獲取到的響應內容也是接口測試執行得到的實際結果。
獲取響應行
獲取響應頭
獲取其它響應信息
代碼示例:
# 導入requests模塊 import requests r = requests.get("https://www.baidu.com") print(r.status_code) #響應狀態碼 print(r.reason) #響應信息 print(r.headers) #獲取響應頭 返回的是dict類型,可以繼續使用get獲取指定的值 # 獲取其它響應信息: print(r.url) # 獲取請求地址 print(r.cookies) #獲取cookies print(r.encoding) #獲取響應的編碼格式
響應正文
依據不同響應正文內容的情況,Requests模塊有四種不同的處理方式
一、普通文本數據
Requests 會自動解碼來自服務器的內容。大多數 unicode 字符集都能被無縫地解碼。請求發出后, Requests 會基於 HTTP 頭部對響應的編碼作出有根據的推測。當你訪問 response.text 之時,Requests 會使用其 推測的文本編碼。response.text使用后亂碼的幾率很大,可以先用response.encoding 屬性來改變編碼,如下所示:
代碼示例:
# 1,普通文本數據 url = "http://www.hnxmxit.com/" response = requests.get(url=url) print(response.content.decode("utf-8"))
查看執行結果:
二、二進制數據
對於非文本請求,response.content能以字節的方式訪問請求響應體。且Requests模塊會自動為你解碼 gzip 和 deflate 傳輸編碼的響應數據
# 2,二進制數據 response =requests.get("https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=2073439784,2147418910&fm=26&gp=0.jpg") print(type(response.content)) # 輸出二進制的圖片數據類型 with open("E:/baidu.gif","wb") as f: # 將二進制數據寫入到本地文件 f.write(response.content)
查看執行結果:
三、json數據
Requests 中有一個內置的 JSON 解碼器 response.json(),處理返回的 JSON 數據。使用后,會把返回的數據 作為一個python中的json數據對象看待。如果 JSON 解碼失敗, response.json() 就會拋出一個異常。
url = 'https://api.weixin.qq.com/cgi-bin/token' data = {'grant_type':'client_credential', 'appid':'wxf14419077f707856', 'secret':'92a113bd4b5ffdc72144740dc7123c99'} response = requests.get(url=url,params=data) # 響應是str類型 ,所以我們需要將響應轉換成json json_obj = response.json() token = json_obj['access_token'] print(token)
四、原始響應內容(一般不使用)
如果需要獲取來自服務器的原始套接字響應,可以使用response.raw,如果確定要獲取的話,還需要在初始請 求中設置stream=True。
# 4,原始響應內容(一般不使用) url = "https://www.baidu.com" response = requests.get(url=url,stream=True) print(response.raw.read(10))