全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

详解python3实现的web端json通信协议

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# python3  # json通信  # python  # http  # get  # json  # Python通过websocket与js客户端通信示例分析  # python和JavaScript通信  # 表现出  # 很简单  # 很长  # 过程中  # 这一  # 是在  # 看了  # 又是  # 那是  # 我这  # 就可  # 所示  # 想做  # 解决方法  # 两块  # 需要注意  # 命令行  # 弄了  # 大家多多  # 可先 


相关文章: 七夕网站制作视频,七夕大促活动怎么报名?  详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)  c++怎么使用类型萃取type_traits_c++ 模板元编程类型判断【方法】  零基础网站服务器架设实战:轻量应用与域名解析配置指南  香港服务器如何优化才能显著提升网站加载速度?  如何实现建站之星域名转发设置?  GML (Geography Markup Language)是什么,它如何用XML来表示地理空间信息?  动图在线制作网站有哪些,滑动动图图集怎么做?  如何通过虚拟机搭建网站?详细步骤解析  平台云上自助建站如何快速打造专业网站?  外汇网站制作流程,如何在工商银行网站上做外汇买卖?  建站之星会员如何解锁更多建站功能?  如何快速配置高效服务器建站软件?  c++23 std::expected怎么用 c++优雅处理函数错误返回【详解】  如何在Windows 2008云服务器安全搭建网站?  公司门户网站制作流程,华为官网怎么做?  在线ppt制作网站有哪些,请推荐几个好的课件下载的网站?  定制建站平台哪家好?企业官网搭建与快速建站方案推荐  如何通过多用户协作模板快速搭建高效企业网站?  建站之星后台搭建步骤解析:模板选择与产品管理实操指南  如何通过主机屋免费建站教程十分钟搭建网站?  c# 服务器GC和工作站GC的区别和设置  武清网站制作公司,天津武清个人营业执照注销查询系统网站?  MySQL查询结果复制到新表的方法(更新、插入)  哈尔滨网站建设策划,哈尔滨电工证查询网站?  ,巨量百应是干嘛的?  php条件判断怎么写_ifelse和switchcase的使用区别【对比】  c# Task.ConfigureAwait(true) 在什么场景下是必须的  如何解决VPS建站LNMP环境配置常见问题?  网站制作需要会哪些技术,建立一个网站要花费多少?  如何在云虚拟主机上快速搭建个人网站?  深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?  C#如何序列化对象为XML XmlSerializer用法  专业网站建设制作报价,网页设计制作要考什么证?  ,有什么在线背英语单词效率比较高的网站?  香港服务器WordPress建站指南:SEO优化与高效部署策略  深圳 网站制作,深圳招聘网站哪个比较好一点啊?  如何在服务器上三步完成建站并提升流量?  如何快速生成高效建站系统源代码?  如何通过宝塔面板实现本地网站访问?  股票网站制作软件,网上股票怎么开户?  建站主机与虚拟主机有何区别?如何选择最优方案?  网站制作价目表怎么做,珍爱网婚介费用多少?  海南网站制作公司有哪些,海口网是哪家的?  长春网站建设制作公司,长春的网络公司怎么样主要是能做网站的?  建站之星安全性能如何?防护体系能否抵御黑客入侵?  制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?  高端智能建站公司优选:品牌定制与SEO优化一站式服务  怎么将XML数据可视化 D3.js加载XML  建站之星下载版如何获取与安装? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。