亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

python中pos的作用是什么

發布時間:2021-04-30 15:11:28 來源:億速云 閱讀:2081 作者:Leah 欄目:編程語言

今天就跟大家聊聊有關python中pos的作用是什么,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

Python主要用來做什么

Python主要應用于:1、Web開發;2、數據科學研究;3、網絡爬蟲;4、嵌入式應用開發;5、游戲開發;6、桌面應用開發。

一、post請求主體詳解

一個正常的post請求主要包括請求行,請求頭,請求主體。

對于get請求來說沒有請求主體entity-body。對于post請求而言,不會對發送請求的數據格式進行限制,理論上你可以發任意數據,但是服務器能不能處理就是另一回事了。服務器收到數據后,如何解析數據呢?它會以請求頭中的Content-Type設置的內容來進行數據解析。確定好Content-Type的格式之后,請求主體的數據格式也就確定下來了。

二、Content-Type的格式有四種:

  1. application/x-www-form-urlencoded(這也是默認格式)

  2. application/json

  3. text/xml

  4. multipart/form-data

這些不同的post請求數據格式要通過HttpEntity來構造,有必要簡單理一下HttpClient的HttpEntity對象,因為所有的post請求數據均需要置于HttpEntity實體中進行發送。HttpEntity是一個接口,實現這個接口的具體類有很多,比較常用的是StringEntity、UrlEncodedFormEntity(繼承自StringEntity)、MultipartEntity。他們將在發送不同格式的post請求時被用到。接下來就詳細地介紹每一種數據格式對應的fiddler請求模擬和Requests請求模擬(Python實現)的實現情況。

三、application/x-www-form-urlencoded數據格式

在W3C官網上明確對這種數據格式進行了定義:

This is the default content type. Forms submitted with this content type must be encoded as follows:Control names and 
values are escaped. Space characters are replaced by '+', and then reserved characters are escaped as described in 
[RFC1738], section 2.2: Non-alphanumeric characters are replaced by '%HH', a percent sign and two hexadecimal digits 
representing the ASCII code of the character. Line breaks are represented as "CR LF" pairs (i.e., '%0D%0A').The control
names/values are listed in the order they appear in the document. The name is separated from the value by '=' and 
name/value pairs are separated from each other by '&'.

這是post請求最常見也是默認的數據提交格式。它要求數據名稱(name)和數據值(value)之間以等號相連,與另一組name/value值之間用&相連。例如:parameter1=12345&parameter2=23456。將請求的內容進行格式化了,其實這個方法同時簡化的客戶端發送,也簡化了服務器端獲取,服務器通過getParameters(String name)即可獲取到傳送來的信息。這是最常見post提交數據的方式,以form表單形式提交數據。

(1)如果用fiddler模擬請求的話,請求頭和請求主體的內容可以這樣構造:

python中pos的作用是什么

模擬請求之后,從返回結果可以查看到我們的請求數據:

python中pos的作用是什么

(2)如果用Requests模擬post請求的話,請求可以這樣構造:

datas = {'parameter1':'12345','parameter2':'23456'}
r = requests.post('http://example.com',data=datas)
print(r.content)
print(r.status_code)

Reqeusts支持以form表單形式發送post請求,只需要將請求的參數構造成一個字典,然后傳給requests.post()的data參數即可。

四、application/json數據格式

application/json格式的請求頭是指用來告訴服務端post過去的消息主體是序列化后的 JSON 字符串。

(1)如果用fiddler模擬請求的話,請求頭和請求主體的內容可以這樣構造:

python中pos的作用是什么

模擬請求之后,從返回結果可以看到我們的請求數據:

python中pos的作用是什么

(2)如果用Requests模擬post請求的話,請求可以這樣構造:

url = 'http://www.example/post'
s = json.dumps({'key1': 'value1', 'key2': 'value2'})
r = requests.post(url, data=s)
print (r.text)

這里我們可以發現Requests模擬post請求時,請求頭格式為application/x-www-form-urlencoded與application/json的主要差別在于請求主體的構造格式(前者是鍵值對,后者是JSON串),前者直接用字典傳入,后者用json.dumps()函數將字典轉為JSON串即可。

五、text/xml數據格式

(1)如果用fiddler模擬請求的話,請求頭和請求主體的內容可以這樣構造:

python中pos的作用是什么

模擬請求之后,從返回結果可以看到我們的請求數據:

python中pos的作用是什么

(2)如果用Requests模擬post請求的話,請求可以這樣構造:

xml = """my xml"""
headers = {'Content-Type': 'application/xml'}
requests.post('http://www.example.com', data=xml, headers=headers)

或者把xml作為一個文件來傳輸:

import requests
def request_ws(request):
with open(archivo_request,"r") as archivo:
    request_data = archivo.read()
target_url = "http://127.0.0.1:8000/?wsdl"
headers = {'Content-type':'text/xml'}
data_response = requests.post(target_url, data=request_data, headers=headers)

六、multipart/form-data數據格式

除了傳統的application/x-www-form-urlencoded表單,我們另一個經常用到的是上傳文件用的表單,這種表單的類型為multipart/form-data。

(1)如果用fiddler模擬請求的話,請求頭和請求主體的內容可以這樣構造:

第一步,先設置好請求頭格式,然后點擊upload file...

python中pos的作用是什么

第二步,上傳你的文件,這里我上傳一個png的圖片。

python中pos的作用是什么

這是fiddler根據我們上傳的文件自動調整生成的請求,在請求頭中看到,我們需要選擇一段數據作為“分割邊界”(boundary屬性),這個“邊界數據”不能在內容其他地方出現,一般來說使用一段從概率上說“幾乎不可能”的數據即可。每次post瀏覽器都會生成一個隨機的30-40位長度的隨機字符串,瀏覽器一般不會遍歷這次post的所有數據找到一個不可能出現在數據中的字符串,一般都是隨機生成。選擇了這個邊界之后,瀏覽器便把它放在Content-Type 里面傳遞給服務器,服務器根據此邊界解析數據。下面的數據便根據boundary劃分段,每一段便是一項數據。(每個field被分成小部分,而且包含一個value是"form-data"的"Content-Disposition"的頭部;一個"name"屬性對應field的ID等等,文件的話包括一個filename)模擬請求之后,從返回結果可以看到我們的請求數據:

python中pos的作用是什么

(2)如果用Requests模擬post請求的話,請求可以這樣構造:

url = 'http://www.example.com'
files = {'file': open('C://Users//Someone//Desktop//2.png', 'rb')}
r = requests.post(url, files=files)
print(r.text)

綜上,就是接口測試中fiddler與requests模擬post接口四種請求數據的構造方法,總結起來有利于在以后的接口測試工組過程中可以及時查閱。

同時,Requests庫還可以處理多部分編碼(Multipart-Encoded)的文件,比如xls文件,甚至改寫content-Type的報頭。

比如:

url = 'http://httpbin.org/post'
files = {'file': ('report.xls', open('report.xls', 'rb'), 'application/vnd.ms-excel', {'Expires': '0'})}
r = requests.post(url, files=files)

看完上述內容,你們對python中pos的作用是什么有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

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

AI

太仆寺旗| 马鞍山市| 金沙县| 阳谷县| 佛学| 上蔡县| 大石桥市| 焉耆| 铜山县| 海安县| 衡南县| 威海市| 富蕴县| 胶州市| 甘德县| 桐城市| 丹巴县| 泽库县| 宜兰市| 正定县| 桦川县| 广州市| 宝兴县| 怀集县| 金寨县| 鸡东县| 天镇县| 云林县| 大悟县| 漳州市| 肥乡县| 略阳县| 松溪县| 固原市| 兴宁市| 林口县| 甘洛县| 平乐县| 安丘市| 营口市| 商丘市|