python3實現的web端json通訊協議

2022-02-23 19:09:14 字數 2070 閱讀 6157

之前有用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)

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 協議的,後來又實現了 協議的通訊,今天公司想做乙個功能自動測試系統,下午弄了一會,發現 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...