隐私保护通话 PrivateNumber-AXB模式:AXB模式绑定信息查询接口

时间:2025-02-12 14:52:30

AXB模式绑定信息查询接口

 1 2 3 4 5 6 7 8 9101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
# -*- coding: utf-8 -*-import timeimport uuidimport hashlibimport base64import sslimport urllib.requestimport hmacfrom hashlib import sha256# 必填,请参考"开发准备"获取如下数据,替换为实际值realUrl = 'https://rtcpns.cn-north-1.myhuaweicloud.com/rest/caas/relationnumber/partners/v1.0' #APP接入地址+接口访问URIAPP_KEY = "a1********" #APP_KeyAPP_SECRET = "cfc8********" #APP_Secret'''选填,各参数要求请参考"AXB模式绑定信息查询接口"subscriptionId和relationNum为二选一关系,两者都携带时以subscriptionId为准'''subscriptionId = '****' #指定"AXB模式绑定接口"返回的绑定ID进行查询relationNum = '+86170****0001' #指定X号码(隐私号码)进行查询# pageIndex = 1 #查询的分页索引,从1开始编号# pageSize = 20 #查询的分页大小,即每次查询返回多少条数据def buildAKSKHeader(appKey, appSecret):    now = time.strftime('%Y-%m-%dT%H:%M:%SZ') #Created    nonce = str(uuid.uuid4()).replace('-','') #Nonce    digist = hmac.new(appSecret.encode(), (nonce + now).encode(), digestmod=sha256).digest()    digestBase64 = base64.b64encode(digist).decode() #PasswordDigest    return 'UsernameToken Username="{}",PasswordDigest="{}",Nonce="{}",Created="{}"'.format(appKey, digestBase64, nonce, now);def main():    # 请求URL参数,可按需删除选填参数    formData = urllib.parse.urlencode({        'subscriptionId':subscriptionId,        'relationNum':relationNum,#         'pageIndex':pageIndex,#         'pageSize':pageSize    })    #完整请求地址    fullUrl = realUrl + '?' + formData    req = urllib.request.Request(url=fullUrl, method='GET') #请求方法为GET    # 请求Headers参数    req.add_header('Authorization', 'AKSK realm="SDP",profile="UsernameToken",type="Appkey"')    req.add_header('X-AKSK', buildAKSKHeader(APP_KEY, APP_SECRET))    req.add_header('Content-Type', 'application/json;charset=UTF-8')    # 为防止因HTTPS证书认证失败造成API调用失败,需要先忽略证书信任问题    ssl._create_default_https_context = ssl._create_unverified_context    try:        fo = open('bind_data.txt', 'a', encoding='utf-8') #打开本地文件        r = urllib.request.urlopen(req) #发送请求        print(r.read().decode('utf-8')) #打印响应结果        fo.write('绑定查询结果:' + str(r.read().decode('utf-8')) + '\n') #查询结果,记录到本地文件    except urllib.error.HTTPError as e:        print(e.code)        print(e.read().decode('utf-8')) #打印错误信息    except urllib.error.URLError as e:        print(e.reason)    finally:        fo.close() #关闭文件if __name__ == '__main__':    main() 
support.huaweicloud.com/devg-PrivateNumber/privatenumber_01_0004.html