先簡單宣告一下http請求中post和get之間乙個簡單的區別:
get請求的資料會附在url之後(就是把資料放置在http協議頭中),以?分割url和傳輸資料,引數之間以&相連,如:login.action?name=hyddd&password=idontknow&verify=%e4
%bd%a0
%e5%a5
%bd。如果資料是英文本母/數字,原樣傳送,如果是空格,轉換為+,如果是中文/其他字元,則直接把字串用base64加密,得出如:%e4
%bd%a0
%e5%a5
%bd,其中%xx中的xx為該符號以16進製表示的ascii。
post把提交的資料則放置在是http包的包體中。
傳送請求模擬:
import requests
payload =
r = requests.post(url,data=payload)
print r.content
而在django中獲取payload這個引數:
body = request.body
json.dumps(urllib.unquote(vaule),encoding='utf-8',ensure_ascii=false)
傳給request的引數為中文經過轉碼的,如圖「**********==start**********」的下一行change_type的值%e6%96:
找了好久才知道解決方案!
至於原理,這篇文章講的不錯!
——————-分割線為更新——————–
同事突然傳了json資料給我,不傳dict,然後,我發現就不會這麼麻煩了!
傳過來的json資料直接進行json.loads(data)就可以使用了。好方法!
後來,我用django的httpresponse對面傳輸的時候,直接傳了字典,結果同事只是拿到key,不能拿到value。才發現,如果傳dict會很不好。果斷傳json資料了!
總結:在http各種請求的時候,傳輸的資料最好使用json資料格式
python模擬http請求
下文主要講述如何利用python自帶的庫模擬http請求,為以後利用python做api測試做準備。只講述模擬http的過程,具體到自己用的時候,要以自己的應用為準做出適當的調整。coding utf 8 相信這句大家都懂的,不解釋 匯入需要的python模組httplib,用來模擬提交http請求...
python模擬http請求2
發現了乙個非常好用的第三方module requests,模擬介面非常簡單。詳細了解請移步 非常不錯 coding utf 8 相信這句大家都懂的,不解釋 匯入需要的requests import requests 定義請求頭 定義post的引數,requests模組,引數不用編碼 reqdata ...
Python模擬HTTP的POST請求
python版本2.7.9 模擬post請求 1 coding u8 2import urllib 3import urllib2 45 url u 6 params urllib.urlencode 78 req urllib2.request url,params 9 response urll...