中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python發送Post請求之如何實現根據參數位置傳參、數據類型、不同方式傳參

發布時間:2021-10-19 09:41:00 來源:億速云 閱讀:209 作者:iii 欄目:編程語言

本篇內容介紹了“Python發送Post請求之如何實現根據參數位置傳參、數據類型、不同方式傳參”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

一、驗證 SSL 證書

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

Python發送Post請求之如何實現根據參數位置傳參、數據類型、不同方式傳參

圖片來自網絡

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

import urllib3 urllib3.disable_warnings()

來忽略警告。

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

二、post 請求

1.斷言

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

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

import requests  import urllib3 urllib3.disable_warnings()  url='http://japi.juhe.cn/qqevaluate/qq'  b={"key":"1cb0de9717e554cef5f3539285b99726",       "qq":"169535"}  r=requests.post(url,data=b) print(r.text)  #轉換成字典后,再去取值 reason=r.json()["reason"] print(reason) #實際結果 exp="success"#預期結果 #斷言 # assert reason==exp if reason==exp:     print("測試通過") else:     print("測試失敗")

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

import requests  import urllib3 urllib3.disable_warnings()  url='http://japi.juhe.cn/qqevaluate/qq'  b={"key":"1cb0de9717e554cef5f3539285b9972",       "qq":"169535"}  r=requests.post(url,data=b) print(r.text)  #轉換成字典后,再去取值 reason=r.json()["reason"] print(reason) #實際結果 exp="success"#預期結果 #斷言 # assert reason==exp if reason==exp:     print("測試通過") else:     raise NameError

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

2.參數放在 body 里面的 post 請求

body 中的參數為鍵值對格式的。

Python發送Post請求之如何實現根據參數位置傳參、數據類型、不同方式傳參

Python發送Post請求之如何實現根據參數位置傳參、數據類型、不同方式傳參

圖片來自網絡

3.參數不放在 body 里面的 post 請求

post 請求的參數也可以放在 params 里面:

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

Python發送Post請求之如何實現根據參數位置傳參、數據類型、不同方式傳參


Python發送Post請求之如何實現根據參數位置傳參、數據類型、不同方式傳參

圖片來自網絡

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

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

Python發送Post請求之如何實現根據參數位置傳參、數據類型、不同方式傳參

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

Python發送Post請求之如何實現根據參數位置傳參、數據類型、不同方式傳參

圖片來自網絡,圖片上的文字是小編編輯的

import requests  import urllib3 urllib3.disable_warnings()  url='http://japi.juhe.cn/qqevaluate/qq'  p={"key":"1cb0de9717e554cef5f3539285b99726",       "qq":"169535"}  body={     "xx":"xxx" }  #Content-Type:application/x-www-form-urlencoded  r=requests.post(url,params=p,data=body) print(r.text)  #轉換成字典后,再去取值 reason=r.json()["reason"] print(reason) #實際結果 exp="success"#預期結果 #斷言 # assert reason==exp if reason==exp:     print("測試通過") else:     print("測試不通過")

總結: post 請求參數有的在 url 里,有的在 body 里面,有的 url 和 body 里面都有。

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

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

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

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

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.不同的方式傳參

Python發送Post請求之如何實現根據參數位置傳參、數據類型、不同方式傳參

圖片來自網絡

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

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

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

3.json 格式的 post 請求

頭部聲明下請求 body 的參數類型。

用 fiddler 發個請求:

Python發送Post請求之如何實現根據參數位置傳參、數據類型、不同方式傳參

Python發送Post請求之如何實現根據參數位置傳參、數據類型、不同方式傳參

Python發送Post請求之如何實現根據參數位置傳參、數據類型、不同方式傳參

代碼可以這樣寫:

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

import requests  url="http://www.example.com/" h={"Content-Type":"application/json"}  body={"key":"1cb0de9717e554cef5f3539285b99726",       "qq":"169535"}  #Content-Type:application/json  傳json= r=requests.post(url,headers=h,json=body) print(r.text)

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

“Python發送Post請求之如何實現根據參數位置傳參、數據類型、不同方式傳參”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

滕州市| 台北县| 永登县| 孝昌县| 神木县| 永康市| 崇明县| 江孜县| 且末县| 蒙山县| 衢州市| 江口县| 西青区| 邵武市| 高州市| 阿合奇县| 海盐县| 伽师县| 敖汉旗| 神农架林区| 宣化县| 涟水县| 舟山市| 仙游县| 临泉县| 集安市| 论坛| 山东| 西安市| 新宁县| 山东省| 马公市| 仁寿县| 锡林郭勒盟| 荣昌县| 丰镇市| 洪江市| 三河市| 陆川县| 南和县| 绍兴县|