自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

基礎(chǔ)篇Python發(fā)送Post請求之根據(jù)參數(shù)位置傳參、數(shù)據(jù)類型、不同方式傳參

開發(fā) 后端
https 的請求,打開 fiddler 的時候,同時運行代碼會報錯,提示沒有這個證書??梢院雎赃@個證書,加上verify=False就可以了。

 [[381766]]

目錄

  • 一、驗證 SSL 證書
  • 二、post 請求
    • 1.斷言
    • 2.參數(shù)放在 body 里面的 post 請求
    • 3.參數(shù)不放在 body 里面的 post 請求
    • 4.到底哪些參數(shù)放在 Query String,哪些參數(shù)放在 body 里面呢?
    • 5.如果兩個地方同時都有,那么就可以同時傳兩個,一一對應(yīng)就可以
  • 三、Content-Type 的格式不同,就用不同的方式傳參
    • 1.寫 post 請求要注意它的數(shù)據(jù)類型到底是哪種
    • 2.不同的方式傳參
    • 3.json 格式的 post 請求

一、驗證 SSL 證書

https 的請求相對于 http 安全級別高,需要驗證 SSL 證書。

 

圖片來自網(wǎng)絡(luò)

https 的請求,打開 fiddler 的時候,同時運行代碼會報錯,提示沒有這個證書??梢院雎赃@個證書,加上verify=False就可以了。但是還是有警告,可以這樣寫:

  1. import urllib3 
  2. urllib3.disable_warnings() 

來忽略警告。

靠譜鏈接:https://blog.csdn.net/qq_35304570/article/details/79826990

二、post 請求

1.斷言

斷言就是通常說的檢查點。

斷言和 if 的區(qū)別: 斷言是當它不等于的時候,就拋出異常。等于的時候不拋出異常。if 語句就是打印出來,讓你看下。

  1. import requests 
  2.  
  3. import urllib3 
  4. urllib3.disable_warnings() 
  5.  
  6. url='http://japi.juhe.cn/qqevaluate/qq' 
  7.  
  8. b={"key":"1cb0de9717e554cef5f3539285b99726"
  9.       "qq":"169535"
  10.  
  11. r=requests.post(url,data=b) 
  12. print(r.text) 
  13.  
  14. #轉(zhuǎn)換成字典后,再去取值 
  15. reason=r.json()["reason"
  16. print(reason) #實際結(jié)果 
  17. exp="success"#預期結(jié)果 
  18. #斷言 
  19. # assert reason==exp 
  20. if reason==exp: 
  21.     print("測試通過"
  22. else
  23.     print("測試失敗"

if 語句也可以拋出異常,例如換成raise NameError。

  1. import requests 
  2.  
  3. import urllib3 
  4. urllib3.disable_warnings() 
  5.  
  6. url='http://japi.juhe.cn/qqevaluate/qq' 
  7.  
  8. b={"key":"1cb0de9717e554cef5f3539285b9972"
  9.       "qq":"169535"
  10.  
  11. r=requests.post(url,data=b) 
  12. print(r.text) 
  13.  
  14. #轉(zhuǎn)換成字典后,再去取值 
  15. reason=r.json()["reason"
  16. print(reason) #實際結(jié)果 
  17. exp="success"#預期結(jié)果 
  18. #斷言 
  19. # assert reason==exp 
  20. if reason==exp: 
  21.     print("測試通過"
  22. else
  23.     raise NameError 

異常是想拋出就可以拋出,不想拋出就可以不拋出。

2.參數(shù)放在 body 里面的 post 請求

body 中的參數(shù)為鍵值對格式的。

圖片來自網(wǎng)絡(luò)

3.參數(shù)不放在 body 里面的 post 請求

post 請求的參數(shù)也可以放在 params 里面:

這個不是隨便放的,如果接口文檔沒有規(guī)定參數(shù)放到請求體的話,你就可以放到 params 里面,也可以放到 body 里面。


 

 

圖片來自網(wǎng)絡(luò)

4.到底哪些參數(shù)放在 Query String,哪些參數(shù)放在 body 里面呢?

抓包,如果看到接口的參數(shù)在url的?號后面,就用params去傳,如果在頭部的空一行下面,就用data去傳。

 

5.如果兩個地方同時都有,那么就可以同時傳兩個,一一對應(yīng)就可以

圖片來自網(wǎng)絡(luò),圖片上的文字是小編編輯的

  1. import requests 
  2.  
  3. import urllib3 
  4. urllib3.disable_warnings() 
  5.  
  6. url='http://japi.juhe.cn/qqevaluate/qq' 
  7.  
  8. p={"key":"1cb0de9717e554cef5f3539285b99726"
  9.       "qq":"169535"
  10.  
  11. body={ 
  12.     "xx":"xxx" 
  13.  
  14. #Content-Type:application/x-www-form-urlencoded 
  15.  
  16. r=requests.post(url,params=p,data=body) 
  17. print(r.text) 
  18.  
  19. #轉(zhuǎn)換成字典后,再去取值 
  20. reason=r.json()["reason"
  21. print(reason) #實際結(jié)果 
  22. exp="success"#預期結(jié)果 
  23. #斷言 
  24. # assert reason==exp 
  25. if reason==exp: 
  26.     print("測試通過"
  27. else
  28.     print("測試不通過"

總結(jié): post 請求參數(shù)有的在 url 里,有的在 body 里面,有的 url 和 body 里面都有。

什么時候發(fā) get 請求,什么時候發(fā) post 請求,這個是由開發(fā)文檔來決定的。

三、Content-Type 的格式不同,就用不同的方式傳參

1.寫 post 請求要注意它的數(shù)據(jù)類型到底是哪種

常見的有四種,并不是只有四種。

1.第一種是 application/json:{“key1“:”value1”,“keyt2":“value2"}

json=

2.第二種是 application/x-www-form-urlencoded:name1= value1&name2=value2

data=

3.第三種是 multipart/form-data:這一種是表單格式的(文件上傳 file=,圖片上傳等混合式)

data=

4.Content-Type:octets/stream(文件下載)

data=

5.text/xml

data=

2.不同的方式傳參

圖片來自網(wǎng)絡(luò)

 

get 請求也是這種格式,主要是 post 請求需要去區(qū)分。

post 請求: 如果是application/x-www-form-urlencoded這種格式的參數(shù),就用data=,如果是application/json這種格式的參數(shù),就用json=。

劃重點: 只有 Content-Type 它是application/json這種格式的參數(shù),就用json=,其它的格式的參數(shù)都用data=。url 上面的參數(shù)還是用params=。

3.json 格式的 post 請求

頭部聲明下請求 body 的參數(shù)類型。

用 fiddler 發(fā)個請求:

代碼可以這樣寫:

第一個參數(shù)傳 url,這個位置不能隨便變,后面的參數(shù)的位置是可以任意變的,只要指定了參數(shù)名稱就可以了。

  1. import requests 
  2.  
  3. url="http://www.example.com/" 
  4. h={"Content-Type":"application/json"
  5.  
  6. body={"key":"1cb0de9717e554cef5f3539285b99726"
  7.       "qq":"169535"
  8.  
  9. #Content-Type:application/json  傳json= 
  10. r=requests.post(url,headers=h,json=body) 
  11. print(r.text) 

使用 fiddler 的時候: ctrl+x 可以清空 fiddler 抓到的包。暫停點擊 Capturing。

本文轉(zhuǎn)載自微信公眾號「清菡軟件測試」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請聯(lián)系清菡軟件測試公眾號。

 

 

責任編輯:武曉燕 來源: 清菡軟件測試
相關(guān)推薦

2011-04-08 10:36:38

MFC多線程

2021-02-09 21:49:51

Python參數(shù)Get

2021-01-13 06:58:35

C語言函數(shù)指針

2021-04-05 08:22:54

Python進制數(shù)據(jù)類型

2011-06-08 10:28:15

ASP.Net

2021-06-09 07:32:18

C++內(nèi)置函數(shù)函數(shù)傳參

2021-05-19 09:53:16

SpringbootMyBatisMySQL

2022-02-14 07:34:23

工具類GET、POST

2021-06-09 09:00:11

Python數(shù)據(jù)類型基礎(chǔ)

2021-06-05 10:02:15

Python進制數(shù)據(jù)類型

2024-05-10 13:46:36

Python進制

2023-03-27 10:04:27

數(shù)據(jù)類型浮點型布爾型

2011-05-23 16:40:00

python

2021-10-16 10:17:51

Go語言數(shù)據(jù)類型

2009-03-12 09:00:14

紫光清華同方兼并

2020-10-26 13:46:07

Java基礎(chǔ)入門篇

2012-05-14 21:14:07

Android頁面?zhèn)髦?/a>

2022-08-15 09:23:18

Uni-appVue-router

2010-02-26 13:34:50

WCF編碼機制

2010-07-16 13:41:08

SQL Serverl
點贊
收藏

51CTO技術(shù)棧公眾號