之前有用python3實現過tcp協議的,後來又實現了http協議的通訊,今天公司想做乙個功能自動測試系統,
下午弄了一會,發現json格式的實現可以更簡單一點,**如下:簡單解說一下,一般與伺服器通訊分兩塊,一塊是get協議,一塊是post協議,
get協議很簡單,直接就可訪問了,post協議,實際上把data資料用起來,程式直接會自動辨別型別。
在寫的過程中遇到3個問題:
1 在實現post協議時曾遇到錯誤,
大致說資料格式的問題,解決方法很簡單,轉為utf-8格式:bytes(data, '
utf8
') ,
2 獲取到的json資料遇到裡面中文時遇到編碼問題
發現表現出0xaa0xbb0xcc0xdd這樣的編碼,
json載入時呼叫utf8即可,使用這一句**:json.loads(rawtext.decode('
utf8
'))
3 列印出json時表現出一行很長很長的字串
長長的字串看了非常痛苦,根本看不清json裡面各對像的關係,網上說用什麼json.tool方法解決,不過那是針對命令列的,我這是在除錯過程中還是希望直接列印出來,
採用如下**:print (json.dumps(jsonstr, sort_keys=false, ensure_ascii= false, indent=2)) ,這裡需要注意ensure_ascii必須為false,否則裡面有中文時
看到的又是0xx什麼的,indent=2表示格式化json顯示,sort_keys則表示此json無需排序
#!/usr/bin/evn python3
#coding=utf-8
#針對web端json協議的通訊庫,通訊協議為json,傳出的data為json格式,接收的資料也是json格式
#外界呼叫時可先初始化web_json類,如下所示:
#get呼叫
#web = web_json("")
#params = "abcd/select/100000?userid=1234&groupid=79"
#web.url_get(params)##
post呼叫
#web = web_json("")
#params = "abcd/select/100000"
#data = ''
#web.url_post(params, data)
from urllib.request import
urlopen
from urllib.parse import
quote
import
json
class
web_json:
def__init__
(self, base_url):
self.base_url =base_url
defget_url_data(self, params, data):
web = urlopen(self.base_url +params, data)
(web.url)
print ("
status:
", web.status)
rawtext =web.read()
jsonstr = json.loads(rawtext.decode('
utf8
'))
print (json.dumps(jsonstr, sort_keys=false, ensure_ascii= false, indent=2))
return
jsonstr
#get方法
defurl_get(self, params):
return
self.get_url_data(params, none)
#post方法
defurl_post(self, params, data):
data=bytes(data, '
utf8')
return self.get_url_data(params, data)
python3實現的web端json通訊協議
之前有用 python3開發 實現過tcp 協議的,後來又實現了 協議的通訊,今天公司想做乙個功能自動測試系統,下午弄了一會,發現 json 格式的實現可以更簡單一點,如下 簡單解說一下,一般與伺服器通訊分兩塊,一塊是 get協議,一塊是 post 協議,get 協議很簡單,直接就可訪問了,post...
python3實現的web端json通訊協議
之前有用python3實現過tcp協議的,後來又實現了http協議的通訊,今天公司想做乙個功能自動測試系統,下午弄了一會,發現json格式的實現可以更簡單一點,如下 簡單解說一下,一般與伺服器通訊分兩塊,一塊是get協議,一塊是post協議,get協議很簡單,直接就可訪問了,post協議,實際上把d...
詳解python3實現的web端json通訊協議
之前有用python3實現過tcp協議的,後來又實現了http協議的通訊,今天公司想做乙個功能自動測試系統,下午弄了一會,發現json格式的實現可以更簡單一點,如下 簡單解說一下,一般與伺服器通訊分兩塊,一塊是get協議,一塊是post協議,get協議很簡單,直接就可訪問了,post協議,實際上把d...