一、环境
1.
操作系统:win10教育版
2.
Python:3.4
二、
正文
1.
代码部分
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import json
import urllib3
from urllib.parse import
urlencode
#1、认证部分,获取Token
authUrl =
"https://www.test.com/api/Authenticate"
http = urllib3.PoolManager()
data = {"organisation":
"XXXXXX","username": "XXXXXXX","password": "XXXXXXXX"}
#认证信息
encode_data =
json.dumps(data).encode()
req =
http.request('POST',authUrl,body=encode_data,headers={'Content-Type':'application/json'})
#请求
#2、如果认证成功,则开始取数
if req.status == 200: #如果请求成功
token = json.loads(req.data.decode())["data"]["token"]
#获取Tocken
# print(token)
#请求数据
args = {"IsUser":"True","Status":"1","Sex":"Man"}
#传递参数
encode_args = urlencode(args) #编码参数
# print(encode_args)
getDataUrl = "https://www.test.com/api/Patrol/Histories?" +
encode_args
# print(getDataUrl)
dataReq = http.request('GET',getDataUrl,headers={'X-Token':token})
#请求,注入Token
# print(dataReq.status)
result = json.loads(dataReq.data.decode())["data"];
#将返回json数据转换为python列表
# print(result[0])
#打印结果
for row in result:
print(row["shopNo"] )
2.
说明
#!/usr/bin/env python
# -*- coding: utf-8
-*-
#上面开头两句,务必加上,可治许多杂病
#1、认证部分,获取Token
http = urllib3.PoolManager() #创建连接池
data = {"organisation": "XXXXXX","username":
"XXXXXXX","password": "XXXXXXXX"} #认证信息,通常为账号密码之类
encode_data = json.dumps(data).encode()
#将python字典类型进行json格式编码解析,并以utf-8编码(encode默认值参考:https://docs.python.org/3/library/stdtypes.html?highlight=encode#string-methods)
req =
http.request('POST',authUrl,body=encode_data,headers={'Content-Type':'application/json'})
#发起http的POST请求, 通过定义body
参数来发送一个已经过编译的JSON数据,
{'Content-Type':'application/json'}用来告诉服务端消息主体是序列化后的JSON 字符串
#2、认证成功,则开始请求数据
if req.status == 200: #如果请求成功,返回状态200
token = json.loads(req.data.decode()) ["token"]
#将json格式数据转换为python字典类型,并获取键值,从而取得token。
encode_args = urlencode(args) #将字典类型的键值对编码为url参数
dataReq = http.request('GET',getDataUrl,headers={'X-Token':token})
#发起http请求,在头部放入token
result = json.loads(dataReq.data.decode())["data"];
#将返回json格式数据转换为python字典类型,并取得data键值(实际上是列表)