一、环境

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键值(实际上是列表)