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
开发者发送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错误码)的调用错误,这种错误一般是由于用户的请求不符合各种基本校验而引起的。用户遇到这些错误的返回首先检查应用的权限、频率等情况,然后参照文档检验一下传入的参数是否完整且合法。
|
(2)子错误码(sub_code)是“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 | 安全等级不足 | 提高应用安全等级或刷新授权安全等级的,请仔细核对文档 |