python3實現的web端json通訊協議

2021-07-25 18:07:02 字數 2340 閱讀 6796

之前有用

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...