调用阿里API实现全国快递物流查询

作者介绍

王梅,女,西安工程大学电子信息学院,2022级研究生
研究方向:机器视觉与人工智能
电子邮件:[email protected]

王泽宇,男,西安工程大学电子信息学院,2022级研究生,张宏伟人工智能课题组
研究方向:机器视觉与人工智能
电子邮件:[email protected]

一. 阿里云OCR算法介绍

1.1 API简介

API(Application Programming Interface)API是应用程序接口,API可以被看作是两个软件系统之间的桥梁,它定义了一组规则和协议,使得不同的应用程序能够相互通信、共享数据和功能。
比如:当你去一家餐厅点餐,你不需要直接进入厨房和厨师交谈,而是通过服务员来传达你的需求。在这个例子中,服务员就像一个API,它作为一个中间人帮助你和厨师进行沟通和交流。
在这里插入图片描述

二.阿里API快递物流查询介绍

随着各大电商网购平台的发展,快递业已形成一个规模庞大的产业,据统计,全球快递企业已超过千家,而快递查询对于电商平台而言是最基础的功能之一,用户通过查询API接口提交快递单号后,查询API接口会调取快递公司的单号信息并返回此单号最新的物流信息,包括物流轨迹、配送状态、更新时间等。目前的主流方法都是调用第三方快递查询接口。快递查询API有即时查询和订阅查询两种,即时是请求即返回数据,订阅则是订阅快递单号到接口,有物流轨迹更新则全量返回数据。目前常用的有快递鸟、快递100、聚合数据、阿里云物流等。
(1)功能亮点
 全国快递物流查询服务,支持快递公司600+家,接口稳定,时效性高。
 主动发起查询请求返回最新物流详情,输入一个单号即可一键查询全程的物流轨迹信息。
 根据用户提交的快递单号,智能判断该单号所属快递公司。
 基于快递公司单号规则和千万级快递单号大数据,单号识别率超过98%。
(2)应用场景举例
在这里插入图片描述

三. 调用全国快递查询API

(1)注册/登录阿里云,可选择支付宝扫码登录和手机号验证登录。
(2)打开阿里云官网选择,云市场-API-全国快递物流查询
在这里插入图片描述
在这里插入图片描述
(3)选择立即购买-实名认证
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
(4)首页-买家中心-进入管理控制台-已购买服务-获取Appcode
在这里插入图片描述
(5) 在产品界面下拉获取Python代码
在这里插入图片描述
(6)请求参数
在这里插入图片描述
(7)返回结果
在这里插入图片描述

四.实验代码及结果

4.1代码

import requests

host = 'https://wuliu.market.alicloudapi.com'
path = '/kdi'
method = 'GET'
appcode = 'ebffbc29cb4d46af85a3634895d3a03a'  # 开通服务后 买家中心-查看AppCode
querys = 'no=YT1804657706443'  # 请求参数
bodys = {
    
    }  # 定义了一个空字典,用于存储请求的body参数
url = host + path + '?' + querys  # 构建了完整的URL,包括主机、路径和查询参数
header = {
    
    "Authorization": 'APPCODE ' + appcode}
try:
    res = requests.get(url, headers=header)
except:
    print("URL错误")
    exit()  # 发送了GET请求,并将结果存储在res变量中。如果在发送请求时出现错误,会打印"URL错误"并退出程序
httpStatusCode = res.status_code  # 获取状态码

if httpStatusCode == 200:  # 如果状态码为200,表示请求成功,打印"正常请求计费(其他均不计费)",并打印响应的文本内容
    print("正常请求计费(其他均不计费)")
    print(res.text)
else:
    httpReason = res.headers['X-Ca-Error-Message']  # 进一步判断错误原因
    # 根据状态码和错误原因,判断出现的具体错误,并打印相应的错误信息
    if httpStatusCode == 400 and httpReason == 'Invalid Param Location':
        print("参数错误")
    elif httpStatusCode == 400 and httpReason == 'Invalid AppCode':
        print("AppCode错误")
    elif httpStatusCode == 400 and httpReason == 'Invalid Url':
        print("请求的 Method、Path 或者环境错误")
    elif httpStatusCode == 403 and httpReason == 'Unauthorized':
        print("服务未被授权(或URL和Path不正确)")
    elif httpStatusCode == 403 and httpReason == 'Quota Exhausted':
        print("套餐包次数用完")
    elif httpStatusCode == 403 and httpReason == 'Api Market Subscription quota exhausted':
        print("套餐包次数用完,请续购套餐")
    elif httpStatusCode == 500:
        print("API网关错误")
    else:
        print("参数名错误 或 其他错误")
        print(httpStatusCode)
        print(httpReason)

4.2结果

D:\anconada\python.exe "C:/Users/10956/Desktop/各科作业/第二学期/AI-Course/AILI API/test.py"
正常请求计费(其他均不计费)
{
    
    "status":"0","msg":"ok","result":{
    
    "number":"780098068058","type":"zto","list":[{
    
    "time":"2018-03-09 11:59:26","status":"【石家庄市】 快件已在 【长安三部】 签收,签收人: 本人, 感谢使用中通快递,期待再次为您服务!"},{
    
    "time":"2018-03-09 09:03:10","status":"【石家庄市】快件已到达【长安三部】(0311-85344265),业务员 容晓光(15908220064)正在第1次派件"},{
    
    "time":"2018-03-08 23:43:44","status":"【石家庄市】 快件离开 【石家庄】 发往 【长安三部】"},{
    
    "time":"2018-03-08 21:00:44","status":"【石家庄市】 快件到达 【石家庄】"},{
    
    "time":"2018-03-07 01:38:45","status":"【广州市】 快件离开 【广州中心】 发往 【石家庄】"},{
    
    "time":"2018-03-07 01:36:53","status":"【广州市】 快件到达 【广州中心】"},{
    
    "time":"2018-03-07 00:40:57","status":"【广州市】 快件离开 【广州花都】 发往 【石家庄中转】"},{
    
    "time":"2018-03-07 00:01:55","status":"【广州市】 【广州花都】(020-37738523) 的 马溪 (18998345739) 已揽收"}],"deliverystatus":"3","issign":"1","expName":"中通快递","expSite":"www.zto.com","expPhone":"95311","courier":"容晓光","courierPhone":"15908220064","updateTime":"2019-08-27 13:56:19","takeTime":"2天20小时14分","logo":"https://img3.fegine.com/express/zto.jpg"}}

进程已结束,退出代码 0

猜你喜欢

转载自blog.csdn.net/m0_37758063/article/details/131176302