飞猪API 异常排查&错误码

更新时间:2016/11/02 访问次数:13028

排查工具

API文档介绍: https://open.alitrip.com/doc2/apiList.htm
API测试工具: https://open.alitrip.com/apitools/apiTools.htm
API错误码查询: https://open.alitrip.com/apitools/errorCodeSearch.htm
API错误码查询: https://open.alitrip.com/apitools/errorCodeSearch.htm
支持中心答疑: https://open.alitrip.com/support/index.htm

API问题

开发者发送HTTP请求淘宝数据之后的出现的问题,包括HTTP连接错误问题,平台级错误问题,业务级错误问题,这三种类型的错误问题分别是在访问淘宝服务器,TOP接入平台,飞猪后端业务服务器这三个层次上出现的问题。

1.HTTP连接错误问题:
请求淘宝服务器过程中出现的错误,这类型错误通常由HTTP响应码标记出来,HTTP响应码由三位十进制数字组成,它们出现在由HTTP服务器发送的响应的第一行。响应码分五种类型,由它们的第一位数字表示:

1xx:信息,请求收到,继续处理
2xx:成功,行为被成功地接受、理解和采纳
3xx:重定向,为了完成请求,必须进一步执行的动作
4xx:客户端错误,请求包含语法错误或者请求无法实现
5xx:服务器错误,服务器不能实现一种明显无效的请求

开发者调用TOP服务最常收到就是200:http请求成功;404:未找到请求的服务;500内部服务器错误等。如果开发者收到的响应码是404,表示用户的网络有问题,如果开发者收到的响应码是响应码是500,表示网络是正常的但是top的服务无法响应。

如果是本地网络有问题可以直接输入命令行ping gw.api.taobao.com测试请求淘宝服务器的速度,如果速度很慢则要考虑服务器提速的问题,如果ping不通,则联系网络管理员确认服务器是否屏蔽淘宝域名。

2.平台级错误问题:
请求TOP接入平台出现的错,此时TOP返回的错误码小于100,这种错误一般是由于用户的请求不符合权限,安全,流量和最基本的参数等校验引起的。

3. 业务级错误问题:
请求后端业务服务器出现的问题,返回的错误码在500到1000之间,具体子错误码及解决方案可参见API文档。

快速排查问题范例

范例1

本地程序报连接重置错误且没有top的错误码返回,这类问题该如何解决?

建议:

1.合理切割任务,将任务粒度放小,减小事务时间,提高事务执行成功率,降低回滚代价;

2.合并任务中重复的内容,在时间间隔容许的范围内,减少可能重复的操作;

3.看是否有批量操作接口,减少单个循环调用次数;

4.控制工作线程池线程个数,根据实际性能和对方服务器处理能力设置并行任务个数:

线程并发开的越多未必成功率越高!

首先本地资源有限(开的越多线程,本地GC回收频率越高,影响执行速度,效率反而降低);

其次,对方可能会由于你的ip连接数过多主动拒绝连接;(DOS保护)

再次,信道无法复用。(当前1.6JDK版本已经能够较好的复用TCP信道,并发瞬间开大量的TCP信道本身就是一种损耗,有时候部分串行化,某种程度上会减少产生TCP信道的数目合理利用信道,提高效率和成功率,客户端做好流控也很重要)

范例2

网络丢包问题解决方案:

问题背景:

1.由于互联网物理线路可靠性不是100%,ISV服务器到TOP之间的通信存在数据丢失情况

2.开发者需要一种方法来验证每次访问取得的数据是不是完整的,有没有丢包

3.目前有的ISV通过这样的方法校验完整性:连续多次调用API,并比较返回结果,若完全相同,则认为是完整的。这种方法不可靠(多次调用本来就有可能返回不同的业务结果),增加了ISV开发成本,也加重了TOP的服务器压力

解决方案:

为了解决开发者反馈的ISV校验数据完整性的问题,TOP已经在HTTP Header中加入一个新的元素:top-bodylength。

使用方法:开发者取到这个top-bodylength的值,计算一下收到的HTTP Body长度,如果两者相等,则说明返回的数据是完整的,如果计算出来HTTP Body的长度小于top-bodylength的值,说明发生了丢包。

注:

1:TOP没有改HTTP Body,所以,不会对已有应用造成任何影响。

2:top-bodylength是表示HTTP Body的个String字符长度(不区分中文英文,都算作1个长度)

错误码一览表

API平台错误

API平台错误是主要包含两类错误:

(1)错误码小于100(不包含15,40,41错误码)的调用错误,这种错误一般是由于用户的请求不符合各种基本校验而引起的。用户遇到这些错误的返回首先检查应用的权限、频率等情况,然后参照文档检验一下传入的参数是否完整且合法。

错误码 错误描述-英文 错误描述-中文 解决方案
3 Upload Fail 图片上传失败 将传入的图片格式改为正确的格式、适当的大小的图片放进消息体里面传输过来,如果传输仍然失败需要减小图片大小或者增加网络带宽进行尝试
7 App Call Limited 应用调用次数超限,包含调用频率超限 调整程序合理调用API,等限频时间过了再调用,业务紧急可提交在线工单
9 Http Action Not Allowed HTTP方法被禁止 请用大写的POST或GET,如果有图片等信息传入则一定要用POST才可以
10 Service Currently Unavailable 服务不可用 多数是由未知异常引起的,仔细检查传入的参数是否符合文档描述
11 Insufficient ISV Permissions 开发者权限不足 子错误码目前有 isv.permission-api-package-empty 没有和任何访问包关联,建议根据业务规则申请对应的权限 isv.permission-api-package-not-allowed 不允许访问不可访问组的API,建议检查一下自己申请的应用标签是否正确,如果确实需要访问不可访问组的API需要根据业务规则到对应的业务线申请权限 例如:酒店代理人不能申请官网&线下信用住权限 isv.permission-api-package-limit 关联的包中不允许访问该API,建议根据业务规则申请对应的权限包 isv.permission-ip-whitelist-limit IP限制不允许访问,建议到安全中心配置正确的IP白名单 isv.permission-api-widget-only-limit 仅允许widget(组件)方式访问
12 Insufficient User Permissions 用户权限不足 应用没有权限调用增值权限的接口,可在开放平台应用控制中心提交权限申请
13 Insufficient Partner Permissions 合作伙伴权限不足 应用没有权限调用增值权限的接口,可在开放平台应用控制中心提交权限申请
21 Missing Method 缺少方法名参数 传入的参数加入method字段
22 Invalid Method 不存在的方法名 传入的method字段必需是你所调用的API的名称,并且该API是确实存在的
23 Invalid Format 无效数据格式 传入的format必需为json或xml中的一种
24 Missing Signature 缺少签名参数 传入的参数中必需包含sign字段
25 Invalid Signature 无效签名 签名必需根据正确的算法算出来的。算法请见: [open.alitrip.com/doc/detail.htm?id=101617#ss2](//open.alitrip.com/doc/detail.htm?id=101617#ss2)
26 Missing Session 缺少SessionKey参数 传入的参数中必需包含session字段
27 Invalid Session 、 unmix-sessionkey-failure 无效的SessionKey参数 传入的session必需是用户绑定session拿到的,如果报session不合法可能是用户没有绑定session或session过期造成的,用户需要重新绑定一下然后传入新的sessionKey
28 Missing App Key 缺少AppKey参数 传入的参数必需包含app_key字段
29 Invalid App Key 无效的AppKey参数 应用所处的环境跟选择的环境不一致,例如:应用处于沙箱测试环境,却选择在正式环境进行测试。
30 Missing Timestamp 缺少时间戳参数 传入的参数中必需包含timestamp参数
31 Invalid Timestamp 非法的时间戳参数 时间戳,格式为yyyy-mm-dd hh:mm:ss,例如:2008-01-25 20:23:30。淘宝API服务端允许客户端请求时间误差为10分钟
32 Missing Version 缺少版本参数 传入的参数中必需包含v字段
33 Invalid Version 非法的版本参数 用户传入的版本号格式错误,必需为数字格式
34 Unsupported Version 不支持的版本号 用户传入的版本号没有被提供
42 Insufficient session permissions 短授权权限不足 调用的是高危API,请参考安全等级文档 [open.alitrip.com/doc/detail.htm?id=1002](//open.alitrip.com/doc/detail.htm?id=1002)
43 Parameter Error 参数错误 一般是用户传入参数非法引起的,请仔细检查入参格式、范围是否一一对应
44 Invalid access token 无效的access token 一般是用户使用top协议获取的sessionkey当做access token通过https方式调用API或调用环境搞错
47 Invalid encoding 编码错误 一般是用户做http请求的时候没有用UTF-8编码请求造成的

(2)子错误码(sub_code)是“isp.”开头的调用错误,这种错误一般是由于服务端异常引起的。用户遇到这类错误需要隔一段时间再重试就可以解决。

子错误码格式 错误信息 归属方 是否可在程序中重试
isp.***-service-unavailable 调用后端服务***抛异常,服务不可用 ISP
isp.remote-service-error 连接远程服务错误 ISP
isp.remote-service-timeout 连接远程服务超时 ISP
isp.remote-connection-error 远程连接错误 ISP
isp.null-pointer-exception 空指针异常错误 ISP
isp.top-parse-error api解析错误(出现了未被明确控制的异常信息) ISP
isp.top-remote-connection-timeout top平台连接后端服务超时 ISP
isp.top-remote-connection-error top平台连接后端服务错误,找不到服务 ISP
isp.top-mapping-parse-error top-mapping转换出错,主要是由于传入参数格式不对 ISP
isp.unknown-error top平台连接后端服务抛未知异常信息 ISP

ISV业务错误

ISV业务级错误是ISV传入的参数缺失,有误或格式错误等原因造成的错误。因此isv应该根据错误信息检验是否传入了相应的信息,对于这一类错误建议改正后再重试。

主要包含两类:

(1)错误码为40,41的错误;40主要是必填参数没有传入报错,41主要是传入的参数格式不对报错。:2.
(2)错误码大于100或者等于15且子错误码(sub_code)是“isv.”开头【( 错误码 > 100 or 错误码 = 15 ) and (isv开头)】的调用错误:

错误响应是用户和服务器交互失败的最直接展示,isv在调用top服务时,如果调用失败,请尽量保留下错误日志以便进行后面的错误追查。

错误码 错误描述-英文 错误描述-中文 解决方案
40 Missing Required Arguments 缺少必选参数 API文档中设置为必选的参数是必传的,请仔细核对文档
41 Invalid Arguments 非法的参数 参数类型不对,例如:需要传入的是数字类型的,却传入了字符类型的参数

安全等级和安全漏洞错误码

错误码 错误描述-英文 错误描述-中文 解决方案
53 Insufficient security level 安全等级不足 提高应用安全等级或刷新授权安全等级的,请仔细核对文档

FAQ

关于此文档暂时还没有FAQ
返回
顶部