之前有用
python3開發
實現過tcp
協議的,後來又實現了
協議的通訊,今天公司想做乙個功能自動測試系統,下午弄了一會,發現
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)
print (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協議的,後來又實現了http協議的通訊,今天公司想做乙個功能自動測試系統,下午弄了一會,發現json格式的實現可以更簡單一點,如下 簡單解說一下,一般與伺服器通訊分兩塊,一塊是get協議,一塊是post協議,get協議很簡單,直接就可訪問了,post協議,實際上把d...
python3實現的web端json通訊協議
之前有用python3實現過tcp協議的,後來又實現了http協議的通訊,今天公司想做乙個功能自動測試系統,下午弄了一會,發現json格式的實現可以更簡單一點,如下 簡單解說一下,一般與伺服器通訊分兩塊,一塊是get協議,一塊是post協議,get協議很簡單,直接就可訪問了,post協議,實際上把d...
詳解python3實現的web端json通訊協議
之前有用python3實現過tcp協議的,後來又實現了http協議的通訊,今天公司想做乙個功能自動測試系統,下午弄了一會,發現json格式的實現可以更簡單一點,如下 簡單解說一下,一般與伺服器通訊分兩塊,一塊是get協議,一塊是post協議,get協議很簡單,直接就可訪問了,post協議,實際上把d...