Python调用示例 此脚本支持 Python 2 和 3,运行前请确保您已安装依赖包 requests。 import urllib import datetime import requests import json import hashlib import base64 import hmac import datetime import uuid import os import sys if sys.versioninfo.major 2: from urllib import quote reload(sys) sys.setdefaultencoding('utf8') VERSION '2' else: VERSION '3' from urllib.parse import quote from importlib import reload from urllib3 import encodemultipartformdata from collections import OrderedDict reload(sys) METHODGET 'GET' METHODPOST 'POST' file False 官网accessKey ak '' 官网securityKey sk '' def hmacsha256(secret, data): if type(secret) bytes: secret bytearray(secret) else: secret bytearray(secret, 'utf8') data bytearray(data, 'utf8') return hmac.new(secret, data, digestmodhashlib.sha256).digest() def base64ofhmac(data): return base64.b64encode(data) def getrequestuuid(): return str(uuid.uuid1()) def getsortedstr(data, method): """ 鉴权用的参数整理 :param data: dict 需要整理的参数 :return: str """ sorteddata sorted(data.items(), keylambda item: item[0]) strlist map(lambda xy: '%s%s' % (xy[0], xy[1]), sorteddata) return '&'.join(strlist) def buildsign(queryparams, bodyparams, eopdate, requestuuid, method): """ 计算鉴权字段 :param queryparams: dict get请求中的参数 :param bodyparams: dict post请求中的参数 :param eopdate: str 请求时间,格式为:'%Y%m%dT%H%M%SZ' :return: str """ bodystr "" if not file: bodystr json.dumps(bodyparams) if bodyparams else '' if method METHODPOST: if file: bodydigest hashlib.sha256(bodyparams).hexdigest() else: if isinstance(bodyparams, dict): bodydigest hashlib.sha256(json.dumps(bodyparams).encode('utf8')).hexdigest() else: bodydigest hashlib.sha256(bodyparams.encode('utf8')).hexdigest() else: bodydigest hashlib.sha256(bodystr.encode('utf8')).hexdigest()