python写http post请求的四种请求体
HTTP 協(xié)議規(guī)定 POST 提交的數(shù)據(jù)必須放在消息主體(entity-body)中,但協(xié)議并沒有規(guī)定數(shù)據(jù)必須使用什么編碼方式。常見的四種編碼方式如下:?
1、application/x-www-form-urlencoded?
這應(yīng)該是最常見的 POST 提交數(shù)據(jù)的方式了。瀏覽器的原生 form 表單,如果不設(shè)置 enctype 屬性,那么最終就會(huì)以 application/x-www-form-urlencoded 方式提交數(shù)據(jù)。請(qǐng)求類似于下面這樣(無關(guān)的請(qǐng)求頭在本文中都省略掉了):
2、multipart/form-data?
這又是一個(gè)常見的 POST 數(shù)據(jù)提交的方式。我們使用表單上傳文件時(shí),必須讓 form 的 enctyped 等于這個(gè)值,下面是示例
3、application/json?
application/json 這個(gè) Content-Type 作為響應(yīng)頭大家肯定不陌生。實(shí)際上,現(xiàn)在越來越多的人把它作為請(qǐng)求頭,用來告訴服務(wù)端消息主體是序列化后的 JSON 字符串。由于 JSON 規(guī)范的流行,除了低版本 IE 之外的各大瀏覽器都原生支持 JSON.stringify,服務(wù)端語言也都有處理 JSON 的函數(shù),使用 JSON 不會(huì)遇上什么麻煩。
4、text/xml?
它是一種使用 HTTP 作為傳輸協(xié)議,XML 作為編碼方式的遠(yuǎn)程調(diào)用規(guī)范。
那么Python在調(diào)用外部http請(qǐng)求時(shí),post請(qǐng)求怎么傳請(qǐng)求體呢?說實(shí)話樓主只實(shí)踐過【1、application/x-www-form-urlencoded】【2、multipart/form-data 】和【3、application/json】?
一、application/x-www-form-urlencoded
二、multipart/form-data?
需要利用python的poster模塊,安裝poster:pip install poster?
代碼:
二、application/json
import jsonurl = "http://www.example.com" body_value = {"package": "com.tencent.lian","version_code": "66" } register_openers() body_value = json.JSONEncoder().encode(body_value) request = urllib2.Request(url, body_value) request .add_header(keys, headers[keys]) result = urllib2.urlopen(request ).read()轉(zhuǎn)載于:https://www.cnblogs.com/111testing/p/6079565.html
總結(jié)
以上是生活随笔為你收集整理的python写http post请求的四种请求体的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 视觉SLAM十四讲第五讲
- 下一篇: linux与windows间共享文件夹