欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解python3實(shí)現(xiàn)的web端json通信協(xié)議

 更新時(shí)間:2016年12月29日 09:58:55   作者:綠色的麥田  
本篇文章主要介紹了python3實(shí)現(xiàn)的web端json通信協(xié)議,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。

之前有用python3實(shí)現(xiàn)過tcp協(xié)議的,后來又實(shí)現(xiàn)了http協(xié)議的通信,今天公司想做一個(gè)功能自動(dòng)測(cè)試系統(tǒng),

下午弄了一會(huì),發(fā)現(xiàn)json格式的實(shí)現(xiàn)可以更簡(jiǎn)單一點(diǎn),代碼如下:簡(jiǎn)單解說一下,一般與服務(wù)器通信分兩塊,一塊是get協(xié)議,一塊是post協(xié)議,

get協(xié)議很簡(jiǎn)單,直接就可訪問了,post協(xié)議,實(shí)際上把data數(shù)據(jù)用起來,程序直接會(huì)自動(dòng)辨別類型。

在寫的過程中遇到3個(gè)問題:

1 在實(shí)現(xiàn)post協(xié)議時(shí)曾遇到錯(cuò)誤,

大致說數(shù)據(jù)格式的問題,解決方法很簡(jiǎn)單,轉(zhuǎn)為utf-8格式:bytes(data, 'utf8') ,

2 獲取到的json數(shù)據(jù)遇到里面中文時(shí)遇到編碼問題

發(fā)現(xiàn)表現(xiàn)出0xaa0xbb0xcc0xdd這樣的編碼,json加載時(shí)調(diào)用utf8即可,使用這一句代碼:json.loads(rawtext.decode('utf8'))

3 打印出json時(shí)表現(xiàn)出一行很長很長的字符串

長長的字符串看了非常痛苦,根本看不清json里面各對(duì)像的關(guān)系,網(wǎng)上說用什么json.tool方法解決,不過那是針對(duì)命令行的,我這是在調(diào)試過程中還是希望直接打印出來,

采用如下代碼:print (json.dumps(jsonStr, sort_keys=False, ensure_ascii= False, indent=2)) ,這里需要注意ensure_ascii必須為False,否則里面有中文時(shí)

看到的又是0xx什么的,indent=2表示格式化json顯示,sort_keys則表示此json無需排序

#!/usr/bin/evn python3
#coding=utf-8

# 針對(duì)web端json協(xié)議的通信庫,通信協(xié)議為json,傳出的data為json格式,接收的數(shù)據(jù)也是json格式
# 外界調(diào)用時(shí)可先初始化web_json類,如下所示:
# get調(diào)用
# web = web_json("http://baidu.com/")
# params = "abcd/select/100000?userID=1234&groupID=79"
# web.url_get(params)
# 
# post調(diào)用
# web = web_json("http://baidu.com/")
# params = "abcd/select/100000"
# data = '{"name": "jack", "id": "1"}'
# 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
    
  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)

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python基于釘釘監(jiān)控發(fā)送消息提醒的實(shí)現(xiàn)

    Python基于釘釘監(jiān)控發(fā)送消息提醒的實(shí)現(xiàn)

    本文主要介紹了Python基于釘釘監(jiān)控發(fā)送消息提醒的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • pycharm 如何跳出服務(wù)器證書不受信任的提示

    pycharm 如何跳出服務(wù)器證書不受信任的提示

    這篇文章主要介紹了pycharm 跳出服務(wù)器證書不受信任的提示操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • Python爬蟲中IP池的使用小結(jié)

    Python爬蟲中IP池的使用小結(jié)

    在網(wǎng)絡(luò)爬蟲的世界中,IP池是一個(gè)關(guān)鍵的概念,它允許爬蟲程序在請(qǐng)求網(wǎng)頁時(shí)使用多個(gè)IP地址,從而降低被封禁的風(fēng)險(xiǎn),提高爬蟲的穩(wěn)定性和效率,本文將深入探討Python爬蟲中IP池的使用,以及如何構(gòu)建和維護(hù)一個(gè)可靠的IP池,感興趣的朋友一起看看吧
    2024-01-01
  • Python代碼實(shí)現(xiàn)刪除一個(gè)list里面重復(fù)元素的方法

    Python代碼實(shí)現(xiàn)刪除一個(gè)list里面重復(fù)元素的方法

    今天小編就為大家分享一篇關(guān)于Python代碼實(shí)現(xiàn)刪除一個(gè)list里面重復(fù)元素的方法,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-04-04
  • Python將大量遙感數(shù)據(jù)的值縮放指定倍數(shù)的方法(推薦)

    Python將大量遙感數(shù)據(jù)的值縮放指定倍數(shù)的方法(推薦)

    本文介紹基于Python中的gdal模塊,批量讀取大量多波段遙感影像文件,分別對(duì)各波段數(shù)據(jù)加以數(shù)值處理,并將所得處理后數(shù)據(jù)保存為新的遙感影像文件的方法,感興趣的朋友一起看看吧
    2025-01-01
  • 使用Python進(jìn)行SSH和文件傳輸實(shí)現(xiàn)方法實(shí)例

    使用Python進(jìn)行SSH和文件傳輸實(shí)現(xiàn)方法實(shí)例

    這篇文章主要為大家介紹了使用Python進(jìn)行SSH和文件傳輸實(shí)現(xiàn)方法實(shí)例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12
  • 詳解如何使用python創(chuàng)建和結(jié)束線程

    詳解如何使用python創(chuàng)建和結(jié)束線程

    線程的創(chuàng)建和結(jié)束是多線程編程中的核心概念之一,在本文中,我們將學(xué)習(xí)如何使用 Python 創(chuàng)建線程,并探討如何優(yōu)雅地結(jié)束線程,需要的朋友可以參考下
    2024-04-04
  • 解決win7操作系統(tǒng)Python3.7.1安裝后啟動(dòng)提示缺少.dll文件問題

    解決win7操作系統(tǒng)Python3.7.1安裝后啟動(dòng)提示缺少.dll文件問題

    這篇文章主要介紹了解決win7操作系統(tǒng)Python3.7.1安裝后啟動(dòng)提示缺少.dll文件問題,本文給大家提供兩種解決方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-07-07
  • 詳解pytorch的多GPU訓(xùn)練的兩種方式

    詳解pytorch的多GPU訓(xùn)練的兩種方式

    本文主要介紹了詳解pytorch的多GPU訓(xùn)練的兩種方式,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • python中round函數(shù)保留兩位小數(shù)的方法

    python中round函數(shù)保留兩位小數(shù)的方法

    在本篇內(nèi)容里小編給各位分享的是一篇關(guān)于python中round函數(shù)保留兩位小數(shù)的方法及相關(guān)知識(shí)點(diǎn),有興趣的朋友們可以學(xué)習(xí)下。
    2020-12-12

最新評(píng)論