1. 如果是python,urllib2中Requests
>>> r =
requests.get('https://api.github.com/user', auth=('user', 'pass'))
>>> r.status_code200
>>> r.headers['content-type']'application/json;
charset=utf8
'>>> r.encoding'utf-8'
>>> r.textu'{"type":"User"...'
>>> r.json(){u'private_gists': 419,
u'total_private_repos': 77, ...}
Requests提供了最简便的JSON解析方法,类似于这样:
>>> import requests
>>> r =
requests.get('https://github.com/timeline.json')
>>> r.json()[{u'repository': {u'open_issues': 0,
u'url': 'https://github.com/...
一个自定义header的例子,POST
>>> import json
>>> url = 'https://api.github.com/some/endpoint'
>>> payload = {'some': 'data'}
>>> headers = {'content-type': 'application/json'}
>>> r = requests.post(url,
data=json.dumps(payload), headers=headers)
2. 或者另一种编码方式
json_data =
""
data =
{}
#请求的url
url =
'http://mapi.test.com/star/user/show.json'
#添加请求参数
data['key'] =
value
params =
urllib.urlencode(data)
req = url + '?'
+ params
#变成request对象
pi =
urllib2.Request(req)
#添加header,编码
header = base64.b64encode('10201:86f2629ae23038de27da5629181f1793')
api.add_header('Authorization','Basic
'+ header)
api.add_header('App-Id','10221003')')
try:
#打开request连接
f = urllib2.urlopen(api)
urllib2.socket.setdefaulttimeout(20)
#读取数据
json_data =
f.read()
f.close()
except
urllib2.URLError, e:
print 'request url
exception:'
if(hasattr(e,'reason')):
print "reason: ",
e.reason
if(hasattr(e,'code')):
print "code: ",
e.code
if(hasattr(e,'read')):
print "read: ",
e.reason
if
json_data.strip()=='':
print 'json data is
null'
decodejson = json.loads(json_data)
3. 上传的接口demo
from poster.encode import
multipart_encode
from poster.streaminghttp import
register_openers
req = url #请求的url #test.jpg是当下文件夹的上传到图片数据
params={'file':open("./test.jpg","rb"),'access_token':'0cd504b7d775cefa4b80e9b12ae15594'
} datagen,headers = multipart_encode(params)
api = urllib2.Request(req,datagen,headers)
#添加header
header =
base64.b64encode('10121:0cd504b7d775cefa4b80e9b12ae15594')
#header =
'0cd504b7d775cefa4b80e9b12ae15594'
print header
api.add_header('Authorization','Bearer '+
header)
api.add_header('App-Id','10221007') #exo
api.add_header('Device-Id','11072e82daed5bad7d94bf4a15e0772b')
api.add_header('Device-V','JTIyQW5kcm9pZCUyMl8lMjI0LjIuMSUyMl80ODAqODU0XzExMDA2MDAwMA==')
#print urllib2.urlopen(request).read()
#读取数据
f = urllib2.urlopen(api)
json_data = f.read()
4.当返回错误的时候,如何显示原网页的内容 声明错误代码
class
NoExceptionCookieProcesser(urllib2.HTTPCookieProcessor):
def http_error_403(self, req, fp,
code, msg, hdrs):
return
fp
def
http_error_400(self, req, fp, code, msg, hdrs):
return
fp
def
http_error_500(self, req, fp, code, msg,
hdrs):
return
fp
请求方式
cj =
cookielib.CookieJar()
opener =
urllib2.build_opener(NoExceptionCookieProcesser(cj))
f =
opener.open(url)
json_data = f.read()
4. 手机端性能记录工具,
Emmagee是监控指定被测应用在使用过程中占用机器的CPU、内存、流量资源的性能测试小工具。
支持SDK:Android2.2以及以上版本
Emmagee功能介绍
1、检测当前时间被测应用占用的CPU使用率以及总体CPU使用量
2、检测当前时间被测应用占用的内存量,以及占用的总体内存百分比,剩余内存量
3、检测应用从启动开始到当前时间消耗的流量数
4、测试数据写入到CSV文件中,同时存储在手机中
5、可以选择开启浮窗功能,浮窗中实时显示被测应用占用性能数据信息
6、在浮窗中可以快速启动或者关闭手机的wifi网络
Emmagee如何使用?
1、安装Emmagee应用
apk下载地址:http://code.google.com/p/emmagee/downloads/list
2、启动Emmagee,列表中会默认加载手机安装的所有应用
3、选择你需要测试的应用,点击“开始测试”,被测应用会被启动
压力测试工具jemeter,详情
百度