python传递参数格式_Python语言学习基础篇之Python发送Post请求之根据参数位置传参、数据类型、不同方式传参...
本文主要介紹了Python語言學習基礎篇之Python發送Post請求之根據參數位置傳參、數據類型、不同方式傳參,通過具體的內容向大家展現,希望對大家Python語言的學習有所幫助。
目錄
一、驗證 SSL 證書
二、post 請求
1.斷言
2.參數放在 body 里面的 post 請求
3.參數不放在 body 里面的 post 請求
4.到底哪些參數放在 Query String,哪些參數放在 body 里面呢?
5.如果兩個地方同時都有,那么就可以同時傳兩個,一一對應就可以
三、Content-Type 的格式不同,就用不同的方式傳參
1.寫 post 請求要注意它的數據類型到底是哪種
2.不同的方式傳參
3.json 格式的 post 請求
一、驗證 SSL 證書
https 的請求相對于 http 安全級別高,需要驗證 SSL 證書。
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 中的參數為鍵值對格式的。
3.參數不放在 body 里面的 post 請求
post 請求的參數也可以放在 params 里面:
這個不是隨便放的,如果接口文檔沒有規定參數放到請求體的話,你就可以放到 params 里面,也可以放到 body 里面。
4.到底哪些參數放在 Query String,哪些參數放在 body 里面呢?
抓包,如果看到接口的參數在url的?號后面,就用params去傳,如果在頭部的空一行下面,就用data去傳。
5.如果兩個地方同時都有,那么就可以同時傳兩個,一一對應就可以
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.不同的方式傳參
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 發個請求:
代碼可以這樣寫:
第一個參數傳 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传递参数格式_Python语言学习基础篇之Python发送Post请求之根据参数位置传参、数据类型、不同方式传参...的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: 丰网速运是什么(为什么这么慢)
 - 下一篇: freetextbox java_Fre