国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

詳解python3實現的web端json通信協議

2020-02-23 04:12:50
字體:
來源:轉載
供稿:網友

之前有用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("http://baidu.com/")# params = "abcd/select/100000?userID=1234&groupID=79"# web.url_get(params)# # post調用# web = web_json("http://baidu.com/")# params = "abcd/select/100000"# data = '{"name": "jack", "id": "1"}'# web.url_post(params, data)from urllib.request import urlopenfrom urllib.parse import quoteimport jsonclass web_json:  def __init__(self, base_url):    self.base_url = base_url      def get_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方法  def url_get(self, params):    return self.get_url_data(params, None)    # post方法  def url_post(self, params, data):    data=bytes(data, 'utf8')    return self.get_url_data(params, data)

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林站長站。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 徐水县| 海原县| 芦溪县| 吴江市| 方正县| 武冈市| 松潘县| 南木林县| 霍林郭勒市| 尖扎县| 宜君县| 凤翔县| 运城市| 秦安县| 宁河县| 寻甸| 额尔古纳市| 九龙县| 通江县| 海阳市| 图们市| 丹寨县| 封开县| 易门县| 抚州市| 隆安县| 西乌珠穆沁旗| 新民市| 大渡口区| 宝坻区| 临夏县| 石阡县| 涿州市| 余庆县| 云龙县| 龙口市| 兴宁市| 潮安县| 博湖县| 将乐县| 许昌市|