python3实现的web端json通信协议
来源:互联网 发布:淘宝店铺运营数据分析 编辑:程序博客网 时间:2024/05/22 10:58
之前有用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 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)
来源:博客园
0 0
- python3实现的web端json通信协议
- 网络通信协议的实现
- 单片机串口通信协议的实现
- JSON Web Tokens的实现原理
- json web token的简单实现 JAVA
- Selenium JSON通信协议
- 单片机: 自定义串口通信协议的实现
- MySQL实现的四种通信协议
- RS485总线通信协议的设计与实现
- 基于TCP通信协议的异步实现
- 常见web通信协议
- sockjs-web实时通信协议
- Python3 JSON
- SVM python3的实现
- ICTCLAS的Python3实现
- python3 简单实现 web 静态服务器
- 实现了msnp(msn通信协议,windows live messenger用的通信协议)
- 【Python3.5】读写JSON格式的数据
- 100. Same Tree
- FFmpeg获取视频帧率fps,tbr
- php集成环境和自己配置的区别,php集成环境、php绿色集成环境、php独立安装版环境这三者的区别
- 数据结构(十一)循环队列的基本操作----6个基本操作
- python设计模式之Builder模式
- python3实现的web端json通信协议
- JAVA 注解的几大作用及使用方法详解
- 图的广度优先搜索
- 给双指针申请内存空间;
- matlab之原始处理图像几何变换
- jmq_0000的专栏,有Android驱动的部分
- App产品设计中,最容易忽视的问题有哪些?
- 纯css3实现动态大脸猫效果
- 表达式和语句