最近需要在 linux 环境下拨测线上服务,于是写了一个 python 的脚本在此分享,话不多说先上代码
import urllib,urllib2,httplib,json,gzip
from cStringIO import StringIO
data = {
'data1': 1,
'data2': 2
headers = {'Content-type':'application/json',
'Accept-Encoding':'gzip'}
json_data = json.dumps(data)
servers = ['http://www.baidu.com',
'http://www.youku.com']
for url in servers:
req = urllib2.Request(url = url,headers = headers,data = json_data)
res_data = urllib2.urlopen(req)
except:
print "server",url,"is not ok!"
continue
buf = StringIO(res_data.read())
f = gzip.GzipFile(mode = 'rb',fileobj = buf)
r_data = f.read()
finally:
f.close()
if r_data.find("200") == -1:
print "server",url,"is not ok!"
else:
print "server",url,"is ok!"
print r_data
功能说明:
1、 支持多个服务接口拨测
2、响应内容支持 gzip 解压
做接口自动化测试时,常常需要使用
python
发送
一些
json
内容
的接口报文,如果使用urlencode对
内容
进行编码解析并
发送
请求
,会发现
服务
器返回了200,OK的状态,但响应
内容
不可读(像是一堆加密报文)。定位问题时发现抓包发现
发送
报文的
内容
与我们
发送
的
json
内容
不符(会去掉”{“与”}“等
内容
),所以重新采用了
json
封装后,问题解决。
二.解决方法
1.先导入
json
模块,采用
json
.dumps将
json
内容
进行封装
import
json
str =
json
.dumps({'userid':'381fccbd776c4deb'})
2.调用这个
内容
并
发送
htt
压缩操作使用
Python
内置的
json
模块的dumps()函数,并设置分隔符为“,”和“:”,以减少输出字符串的长度。格式化操作同样使用
Python
内置的
json
模块的dumps()函数,并设置indent参数为4,使输出的字符串具有更好的可读性。在GUI类中,先调用了父类(tk.Frame)的构造函数初始化,然后创建了一个文本框对象和两个按钮对象,并分别通过pack()方法将它们添加到GUI窗口中。当点击压缩或格式化按钮时,程序将获取文本框中的
JSON
字符串,并将其传递给相应的函数。
#-*- coding: utf-8 -*-
======================================================================
描述:将多行格式化的字符串进行压缩
(例如格式化的sql,替换多余的空格和换行符进行压缩为一行字符串)
作者:xiawp
日期:2020年5月27日 14:24:48
思路:通过split拆分‘/n’,挨个执行trim,重新join组合
python
中 类似 “trim”的函数是:strip(.
解释 HTTP
请求
与响应通信机制,构建GET 与
POST
request http
请求
消息, 解析http响应 respone, requet
请求
参数,
请求
头,消息体,准备http响应参数 response参数等。 query string设置。HTTP头部 header 格式 content-type 的设置。 通过
POST
请求
上传文件,
请求
与响应
json
格式 ,
Python
reqquests 最佳教程
python
实现对
json
进行压缩处理,
网络带宽有限,
python
如何对大的
json
内容
进行压缩,减少网络带宽。
可以先对
Json
字符串进行压缩,然后进行base64编码
这里可以理解为将
python
中的各种数据结构转化为
json
字符串的过程。涉及api:dump、dumps反序列化:将输入的
json
字符串,转化为
python
对象的过程。涉及api:load、loads以反序列化为例,如果需要从文件中读取数据,则使用load,直接传入文件描述符。简而言之,就是需要从文件中读写数据时,使用load、dump,否则使用loads、dumps如果是自定义的对象,需要先将对象转化为字典类型,再使用
json
库相关的api。
所有的编程语言都能够识别的数据格式叫做
json
,是字符串
能够通过
json
序列化成字符串有如下类型: (int float bool str list tuple dict None)
json
用法
(1) dumps和loads是一对,可以序列化成字符串
dic = {"name":"高云峰","age":81,"classroom":"
python
31","family":["老爸","老妈","老伴"]}
ensure_ascii=False 显示中文 sort_keys=True 对字
通常用
gzip
压缩过的云端数据需要做解压处理,以下代码主要用
python
3实现对获取到的云端
gzip
压缩数据进行还原。# -*- coding: utf-8 -*-
Spyder Editor
This is a temporary script file.
#! /usr/bin/env
python
3.6
import requests
import
gzip
def...
# gz文件地址
url='https://shilupan-basic-user-pro.oss-cn-shanghai.aliyuncs.com/carrier/moxie/origin/39984791325599432283.txt.gz?Expires=1527497273&OSSAccessKey...
def gzdecode(data) :
compressedstream = StringIO.StringIO(data)
gzip
er =
gzip
.
Gzip
File(f
无论使用何种编程语言,
json
格式的数据已被广泛应用,不论是数据的传输还是存储,在很多应用场景下,你可能想进一步地压缩
JSON
字符串的长度,以提升传输效率,如果你使用的是nosql数据库,你可能想进一步的压缩
json
字符串的长度来节省你的存储空间,接下来,我将介绍一下目前最常用的
json
数据压缩技术(C
JSON
和HPack)的实现(文章最后有彩蛋哦)。一、C
JSON
C
JSON
的压缩算法, 主要是...