还剩15页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
淘宝网开放平台错误自查手册本文档针对
2.0服务,文档中的
2.0的说法是相对已下线的
1.0而言的墨灵2010-10-15目录TOC\o1-3\h\z\u
一、错误处理流程概览3
二、服务器响应内容透析
41.调用成功返回格式
42.调用错误返回41http连接错误42服务端错误总述43平台解析错误54业务处理错误6
三、响应格式错误处理
91.响应格式格式错误,但数据正确
92.响应格式错误,数据也错误10
四、平台级错误处理11
五、业务级错误处理
131.参数错误
132.权限控制
133.用户不存在
134.服务错误15a服务调用错误15b服务调用异常15c远程调用错误15dTop解析错误15
六、返回参数缺失处理
161.整个消息体为空或缺少文档中说明的结构体返回
162.缺少fields指定字段返回16
七、总结
171、错误处理流程概览图表1错误处理流程从这个错误处理流程可知,在整个错误处理的过程中,一共可以分为3条主要的流程请求解析异常流程处理,平台级错误处理和业务调用错误处理当然,这一切处理的最初也是最重要的一步就是将服务器响应内容保留下来
2、服务器响应内容透析服务器响应内容,顾名思义就是isv调用top服务得到的响应的内容这些内容能够最真实的反应出isv请求的问题和服务器当前的情况,也最能够帮助isv找到问题的所在服务器响应内容一般分为两种一种是wiki文档中所编写的成功调用所返回的字段,另一种是调用失败的返回的错误相关信息
1.调用成功返回格式
2.0的服务调用成功的响应返回信息相对的规范化了
2.0的响应内容主要也可以分为3层最外一层是你调用服务的名称所对应的响应标记,如获取单个商品(taobao.item.get)的响应最外层为item_get_response:{},表示这是获取单个商品的响应;中间一层是返回结构体的标记如果结构体是单个,那么
2.0返回的这一层里面就会是单个的结构,如获取的单个商品的结构体就是item:{};反之,如果结构体是多个,那么列表也会明显的表示出来,如搜索商品列表的结构体就会是”items”:{“item”:[{}{}……]}最外层的items表示这是一个商品的列表,后面的item表示列表中的每一个子结构体都是属于商品item的,然后就跟着商品的数据;最内一层就商品的具体字段信息了
2.调用错误返回当调用发生错误的时候,一般情况下可以分为几大类错误信息的返回http连接错误、平台解析错误、业务处理错误这三种类型的错误分别代表了淘宝服务器、淘宝接入平台、top-api业务,几个层次上出现的问题1http连接错误http连接错误是请求通信过程中出现的错误,这类型错误通常由http响应码标记出来http响应码由三位十进制数字组成,它们出现在由HTTP服务器发送的响应的第一行响应码分五种类型,由它们的第一位数字表示1xx信息,请求收到,继续处理2xx成功,行为被成功地接受、理解和采纳3xx重定向,为了完成请求,必须进一步执行的动作4xx客户端错误,请求包含语法错误或者请求无法实现5xx服务器错误,服务器不能实现一种明显无效的请求Isv调用top服务最常收到就是200http请求成功;404未找到请求的服务;500内部服务器错误等等如果用户收到的响应码是404,表示用户的网络有问题或者top被和谐了……如果用户收到的响应码是500,表示网络是ok的,是top的服务无法响应2服务端错误总述平台解析错误和业务处理错误都是http成功访问到top服务(http响应码返回为200)之后所产生的错信息,他们top处理isv请求过程中出现的问题
2.0的错误响应信息的最外层为{“error_response”:””},表示这是调用服务失败所返回的错误信息信息体里面一层总共包含了五个元素args:{arg:[{“key”:“””value”:””}{“key”:“””value”:””}{“key”:“””value”:””}……]},”code”:””,“msg”:””,”sub_code”:””和”sub_msg”:””args表示用户传入的参数列表是什么,里面是一个arg的列表会包含用户传入的所有参数信息,每个arg表示一个参数的信息,key表示参数的名称,value表示参数的内容,用以方便用户定位自己的错误;code表示用户调用错误的错误码是多少,小于200表示平台级错误,200-1000之间表示大范围的业务错误,即哪一类型的api调用发生了错误(根据api的大类来分,如商品类的api是530,交易类的api是520,等);msg表示大类型的错误码所对应的错误信息,一般不具备独立的debug作用,需要和sub_code和sub_msg一起使用才行;sub_code是调用错误的子错误码,他表示用户调用错误的原因;sub_msg是子错误码所对应的错误信息,他用来补充细化子错误码的错误原因的例如调用
2.0的taobao.item.get服务错误时返回的错误信息{error_response:{args:{arg:[{key:app_keyvalue:15739}{key:fieldsvalue:list_timedelist_timeapprove_status}{key:formatvalue:json}{key:methodvalue:taobao.item.get}{key:nickvalue:tbtest561}{key:partner_idvalue:TOPTEST}{key:signvalue:668FB4A049F71A1C845EF8C05B1F3E66}{key:timestampvalue:2010-03-0518:03:
06.325}{key:vvalue:
2.0}]}code:530msg:Remoteserviceerrorsub_code:missing-parametersub_msg:iid和num_iid至少要传入一个}}这个信息的开头为error_response,表示这是调用错误所返回的错误信息里面的args列出了用调用这个接口传入的信息有[{key:app_keyvalue:15739}{key:fieldsvalue:list_timedelist_timeapprove_status}{key:formatvalue:json}{key:methodvalue:taobao.item.get}{key:nickvalue:tbtest561}{key:partner_idvalue:TOPTEST}{key:signvalue:668FB4A049F71A1C845EF8C05B1F3E66}{key:timestampvalue:2010-03-0518:03:
06.325}{key:vvalue:
2.0}]这些信息是从用户的请求信息里面解析出来的错误码code为530,表示这是调用商品的api所产生的错误错误信息msg为Remoteserviceerror表示这是调用业务处理所产生的错误子错误码sub_code为missing-parameter,表示这个错误是因为缺少了参数所产生的子错误信息sub_msg为iid和num_iid至少要传入一个,表示少传的参数为iid或num_iid这所有的错误信息叠加起来可以知道,这个错误是用户调用taobao.item.get接口时业务处理发现用户没有传入商品id所导致的3平台解析错误平台解析错误是指top返回的错误码小于100的情况平台解析是非业务性的普适的校验接入层,主要用于对用户的各种权限、和入参进行最基本的校验现在的平台错误码主要有错误码错误描述(英文)错误描述(中文)错误来源3UploadFail图片上传失败平台本身4UserCallLimited用户调用次数超限ISV5SessionCallLimited会话调用次数超限ISV6PartnerCallLimited合作伙伴调用次数超限ISV7AppCallLimited应用调用次数超限ISV8AppCallExceedsLimitedFrequency应用调用频率超限ISV9HttpActionNotAllowedHTTP方法被禁止(请用大写的POST或GET)ISV10ServiceCurrentlyUnavailable服务不可用平台本身11InsufficientISVPermissions开发者权限不足ISV12InsufficientUserPermissions用户权限不足ISV13InsufficientPartnerPermissions合作伙伴权限不足ISV15RemoteServiceError远程服务出错平台本身21MissingMethod缺少方法名参数平台本身22InvalidMethod不存在的方法名ISV23InvalidFormat非法数据格式ISV24MissingSignature缺少签名参数ISV25InvalidSignature非法签名ISV26MissingSession缺少SessionKey参数平台本身27InvalidSession非法的SessionKey参数ISV28MissingAppKey缺少AppKey参数平台本身29InvalidAppKey非法的AppKey参数ISV30MissingTimestamp缺少时间戳参数平台本身31InvalidTimestamp非法的时间戳参数ISV32MissingVersion缺少版本参数平台本身33InvalidVersion非法的版本参数ISV34UnsupportedVersion不支持的版本号ISV40MissingRequiredArguments缺少必选参数平台本身41InvalidArguments非法的参数ISV42ForbiddenRequest请求被禁止ISV43ParameterError参数错误ISV图表2平台错误码列表Isv可以通过错误码和解释来纠正问题如错误码为3的响应表示图片上传失败,错误码为26表示用户没有传入session参数,错误码为27表示用户传入的session参数找不到对应的session记录,等等4业务处理错误业务处理错误是用户通过平台校验进入业务流程出现了错误所发出来的
2.0调用失败后服务器所返回的错误信息格式就是{“error_response”:{args:{arg:[{“key”:“””value”:””}{“key”:“””value”:””}{“key”:“””value”:””}……]}”code”:””“msg”:”””sub_code”:”””sub_msg”:””}},里面的code是数字形式的标记着一种业务类型的错误编码,msg则是比较大范围内的表示错误类型的字符串而sub_code是以字符串形式粗略表示错误的类型,sub_msg则是表示具体的错误原因
2.0的code包含以下几种分类产品线错误码用户500类目510交易520退款521商品530商品扩展API531邮费模板532产品540物流550店铺560评价570淘宝客580系统590备案591增量API600比价610画报620江湖630分销640淘秀650收费660Misc保证金等杂项api670图表3业务处理错误码分类列表由上图可知,每一大类的api在
2.0中其实是共享一个code的,它能让用户在复杂组合调用中指导是哪一类的api出现了问题,实现初步的定位
2.0的业务错误中,msg里面最容易出现的内容就是Remoteserviceerror,这表示用户是在通过了平台校验后进行业务流程的时候出现的错误其他的错误还有RemoteServiceTimeout后台处理业务超时等等的错误这一个错误信息的力度比较粗,很难单独用地进行错误处理
2.0的业务处理错误信息主要要看sub_code和sub_msg这两个字段sub_code表示了服务对业务错误的分类,sub_msg表示了是错误原因sub_code根据业务错误类型主要可以分为如下几类子错误码格式错误信息isv.###-not-exist:***根据***查询不到###isv.missing-parameter:***缺少必要的参数***isv.invalid-paramete:***参数***无效,格式不对、非法值、越界等isv.invalid-permission权限不够、非法访问isv.parameters-mismatch:***-and-###传入的参数***和###不匹配,两者有一定的对应关系isv.***-service-error:###调用***服务返回false,业务逻辑错误,###表示具体的错误信息isp.***-service-unavailable调用后端服务***抛异常,服务不可用isp.remote-service-error连接远程服务错误isp.remote-service-timeout连接远程服务超时isp.remote-connection-error远程连接错误isp.null-pointer-exception空指针异常错误isp.top-parse-errorapi解析错误(出现了未被明确控制的异常信息)isp.top-remote-connection-timeouttop平台连接后端服务超时isp.top-remote-connection-errortop平台连接后端服务错误,找不到服务isp.top-mapping-parse-errortop-mapping转换出错,主要是由于传入参数格式不对,top需要加强判断isp.unknown-errortop平台连接后端服务抛未知异常信息图表4子错误码列表从上面的错误列表中可以看出,以isv开头的一般都是isv的错误,这一类错误一般是由于用户提供的参数不合法或者不匹配造成的,因此isv应该根据错误信息检验是否传入了相应的信息,对于这一类错误建议改正后再重试;以isp开头的错误一般是isp服务不可用或top平台连接后端服务时的错误,这些错误可能与后台服务端的服务可用性有关,建议用户在一段时间后重试错误响应时用户和服务器交互失败的最直接展示,isv在调用top服务时,如果调用失败,请尽量保留下错误信息以便进行后面的错误追查
3、响应格式错误处理响应格式错误是指用户调用top服务时,传入参数设置了format参数为json,但是接受到的却为xml的响应格式,或者设置格式为xml接收到的却为json响应的格式的情况一般正常情况下这种情况是不会出现的,但是还是会有一些异常的情况会引起这个问题这种响应格式错误的问题在isv的程序中通常会表现为,响应解析格式错误例如用户使用的top的javaSDK客户端调用top服务,设置的format格式为json却得到了一个xml的响应,这是sdk就会报一个错误说响应开始处缺少一个“{”符号这是因为xml响应是以“”开始的缘故一般会发生这种现象的原因有一下三种用户传入的参数过大导致流解析异常,用户调用太过频繁导致的响应异常,top服务器故障为了定位到问题出在哪里,以便找到相应的解决方法,用户在遇到响应格式错误的情况时可以参考以下步骤进行调试图表5响应格式错误处理流程
1.响应格式格式错误,但数据正确用户第一步应该分析一下相应的内容里面是不是除了格式错误以外,其他的响应内容都是正确调用的返回结果例如,有个用户用top的sdk,设置format为json,调用top得到了这样一个返回结果com.taobao.api.json.JSONException: A JSONObject text must begin with { at character 1 xml version=
1.0 encoding=utf-8 rsptotalResults1115/totalResultsitemiid![CDATA[77a003aef35f8d959eef03d7ba3d23e3]]/iidmodified2010-03-01 16:04:15/modified/itemitemiid![CDATA[c559afab73ab721a8e7500b62864add0]]/iidmodified2010-03-01 16:04:05/modified/itemitemiid![CDATA[28a3410c88bc2ba2471080ce8891eaf7]]/iidmodified2010-03-01 16:03:59/modified/itemitemiid![CDATA[915383f4733b7a7c2549aa863d305995]]/iidmodified2010-03-01 16:03:53/modified/item……itemiid![CDATA[528223dc2d67213aa29ab84c74c6a60a]]/iidmodified2010-03-01 07:30:52/modified/item/rsp从这个异常的开头可以看到,这是sdk的json解析抛了一个异常,说响应内容的内容应该是以“{”开始的这说名,isv收到的响应格式肯定出了问题再看一下响应的内容rsp/rsp相应结果标签之间包含了totalResults和item列表,这些数据表明,这是调用商品查询接口返回的结果数据查询到的结果总数是1115条,当前页的商品iid和最近修改时间也在其中这些查询结果数据是正常的,但是返回格式却不是传入的json而是变成了xml这位isv联系了top的技术支持,在建议减缓调用频率以后,返回的数据格式正常了,这样就临时控制了这种情况的发生同时技术支持将这些情况反映到了开发,top这边后续就会找到问题根源,进一步杜绝这种情况的发生
2.响应格式错误,数据也错误如果用户第一步分析发现,返回的信息并不是调用成功的信息而是某个平台错误,而且用户本身的参数并不会导致这个错误的产生,此时用户就需要查看自己调用接口的参数了如果用户调用的接口需要传入比较大的数据(如图片、商品的长篇描述等等),那么用户应首先尝试着减小这些入参到合法范围内输入(传入小图片或者只传入少量的描述文字等)如果用户调用成功,表示错误是因为用户入参太大造成了解析错误引起的,用户应配合自己所在地方的网速,请求大小等等的信息合理设置自己的参数大小和接口调用顺序如果用户减小参数还是解析失败的话,用户尝试着不传入图片或只传入几个字节的描述的内容进行接口调用在传入描述只有很少的字节的情况下如果不传图片调用成功了,那么应该是top的服务器的问题,请将这个情况反馈给技术支持进行解决;如果图片不传调用仍然失败了,那么应该是用户的调用参数或网络有问题,请仔细对照文档说明对参数进行修改或等待网络状态好一点的时候进行调用总的来说,如果用户发生了响应格式错误的情况,一般分为三种情况用户本身传入的format就是错误的,这种情况用户需要查看自己传入的参数是否正确;用户通信的网络太差,服务端造成请求解析失败而丢失了format信息,这种情况下用户需要调整自己的网络通信情况,等状况恢复再调用;如果是其他由于图片或调用太频繁而引起的问题,用户需要减小图片或减缓调用来提高成功率,并且将这些情况通报给top技术支持的同学
4、平台级错误处理在前文的错误综述中介绍过,top的错误可以分为平台级错误和业务级错误所谓平台级错误就是指错误码小于100的调用错误这种错误一般是由于用户的请求不符合各种的基本校验而引起的下面将对于各种平台级错误及相应的解决办法陈列于此错误码错误解释解决办法3图片上传失败将传入的图片格式改为正确的格式、适当的大小的图片放进消息体里面传输过来如果传输仍然失败需要减小图片大小或者增加网络带宽进行尝试4用户调用次数超限调整程序逻辑合理利用api,等第二天再调用或者向技术运维的同学申请增加调用次数5会话调用次数超限6合作伙伴调用次数超限7应用调用次数超限8应用调用频率超限Isv调节api调用频率,不能太过频繁的调用9HTTP方法被禁止请用大写的POST或GET,如果有图片等信息传入则一定要用POST才可以10服务不可用多数是由未知异常引起的,用户仔细检查自己传入的参数是否符合文档中描述的样子11开发者权限不足appKey所对应的应用不具备权限调用当前接口需要联系运营或技术支持的同学开通调用该接口的权限12用户权限不足13合作伙伴权限不足15远程服务出错Api调用后端服务出错,isv首先查看自己的参数是否合法,如果参数没有问题请过一段时间再尝试,如果还不行请联系技术支持21缺少方法名参数传入的参数加入method字段22不存在的方法名传入的method字段必需是你所调用的api的名称,并且该api是确实存在的23非法数据格式传入的format必需为json或xml中的一种24缺少签名参数传入的参数中必需包含sign字段25非法签名签名必需根据正确的算法算出来的算法请见http://open.taobao.com/dev/index.php/API签名算法26缺少SessionKey参数传入的参数中必需包含session字段27非法的SessionKey参数传入的session必需是用户绑定session拿到的如果报session不合法可能是用户没有绑定session或session过期造成的,用户需要重新绑定一下然后传入新的sessionKey28缺少AppKey参数传入的参数必需包含app_key字段29非法的AppKey参数用户传入的appKey参数确实是要存在的,如果没有申请appKey的同学请去申请appKey,如果是已经有了appKey却调用不同过的,请联系技术支持解决30缺少时间戳参数传入的参数中必需包含timestamp参数31非法的时间戳参数用户传入的时间戳不合法时间戳,格式为yyyy-mm-ddhh:mm:ss,例如2008-01-2520:23:30淘宝API服务端允许客户端请求时间误差为10分钟32缺少版本参数传入的参数中必需包含v字段33非法的版本参数用户传入的版本号格式错误,必需为数字格式34不支持的版本号用户传入的版本号没有被提供现在top只支持
2.0的版本,
1.0版本已经下线40缺少必选参数用户传入的参数中漏掉了必传的参数请仔细对照文档检查41非法的参数用户传入的参数不符合文档中说明的参数格式,请参照文档进行修改42请求被禁止请求被禁止(目前没有在控制)43参数错误参数解析发生错误或异常一般是用户传入参数非法引起的请仔细检查入参格式、范围、是否一一对应等等情况44Isperror后台接入服务错误这种后台服务异常引起的错误,请联系技术支持45非法的版本号,API
1.0已经关闭,建议使用
2.0图表6平台级错误码及其解决方案基本上来说,平台错误是一个通用的、普适的校验一般针对用户的权限、安全、流量和最基本的参数等等进行校验用户遇到这些错误的返回一定要第一步检查自己的权限、频率等情况;然后就需要参照文档检验一下自己的传入的参数是否完整且合法;如果这些都无法解决问题,请联系技术支持的同学进行反馈,top后台会尽快解决这些问题
5、业务级错误处理业务级错误是指isv请求进入top业务处理以后爆出来的业务相关的错误Top的业务错误一般可以分为4个大类参数错误、权限控制、用户不存在和服务错误详细的分类可参见“图表4子错误码列表”
1.参数错误参数错误指topapi根据业务要求对用户传入的参数进行校验组装的时候产生的错误
2.0中的参数错误的错误码是在调用返回的sub_code子错误码里面得到具体体现的
2.0的参数错误一般有如下几个错误码missing-parameter,invalid-parameter,parameters-mismatch,XXX-not-exist等等missing-parameter表示缺少了某些必传参数(如获取单个商品是iid和num_iid一个都没传入);invalid-parameter表示用户传入的参数错误(如传入的iids个数不符合规定,传入的iid对应的商品已删除等等);parameters-mismatch表示用户传入的某些有对应关系的参数个数不匹配了(如input_pids和input_str长度不匹配,或者sku_properties和sku的其他参数个数不匹配);XXX-not-exist表示用户指定的参数找不到对应的记录(即这个参数所对应的记录不存在或已经被删除了)这些参数错误,都是由于isv传入的参数有问题而引起的用户在遇到报参数错误的情况下,需要查看对应的错误消息内容(
2.0是sub_msg)中的说明来进行入参修改建议将这部分内容展示给用户,可以让用直观的看到错误的原因,从而改进输入
2.权限控制权限控制的错误是指用户使用了自己不享有的服务所造成的错误这类型的错误
2.0的子错误码为invalid-permission这类型的错误通常都是用户进行的操作触碰到了淘宝的业务规则,导致了top的业务校验不通过如用户没有登录却要获取某个卖家仓库中的商品,用户不享有多图服务却要上传商品多图或商品属性图片,成人类目直接上传图片,修改自动发货的商品,不是卖家或买家却要获取交易详细信息的……这些错误并不是用户传入的参数找不到相应的数据、或者传入的参数是错误的造成的相反的,用户传入的参数都符合文档描述,但是用户不具备权限来进行相应的操作在这种情况下,isv有几条路可以选择第一对于查询类型的权限控制如果用户是信息的所有者,那么需要让用户进行登录绑定,这样用户就够进行权限控制的操作了;如果用户不是信息的合法查看人,那么isv要明确的告诉用户这个操作不可以进行,并且不要进行重试操作了第二对于增删改类型的操作的权限控制如果用户是因为没有享有服务(如没有享有图片空间的服务)而产生的权限限制,isv需要引导用户去进行服务的开通后再来进行操作,之后再重新调用接口;如果是因为用户操作了别人的数据而引起的权限控制,那么isv要明确的跟用户报错,并且不能再进行重试操作总之,当用户遇到报权限控制的错误时,isv不能直接进行重试应该将问题直接告诉用户,并引导用户进行相关的登录、开通服务等操作来调整权限以后,再让用户重试操作如果用户不愿意进行调整,isv此时应该直接停止该操作,不能默认的进行重试,因为这种前提下,重试是完全没有作用的
3.用户不存在用户不存在是指top后台根据用户绑定的nick或者传入的nick对用户信息进行查询的时候找不到用户记录所报出的错误
2.0的子错误码user-not-exist用户遇到这种问题首先请确认调用的这个接口自己有没有传入nick这个参数如果nick是根据用户绑定的session取得的,那么用户需要过一会儿再重新调用看看如果隔一段时间还不行,请联系技术支持解决如果用户自己通过参数传入了nick,那么请用户仔细检查自己传入的nick是否正确例如有没有多一个空格或者大小写错误的?该用户是否确实存在的?等等如果问题是因为名称错误或用户确实不存在引起,用户需要更改输入参数后才能再次调用如果用户名称正确,用户也确实存在,却还是报用户不存在错误,用户需要检查传入的nick是否包含难以识别的编码的字体如果nick中包含了火星文或者其他编码的字体,请考虑将nick转换成utf8以后重新尝试或者放弃此次操作如果上述问题都不存在,请联系技术支持的同学进行查看用户不存在的整个查错过程如下所示图表7user-not-exist错误的查错流程
4.服务错误服务错误主要指用户的请求通过了api业务的基本校验,在调用后台服务的时候由于出现了异常或者更进步的业务报错而产生的错误这一类错误主要分为4个大类服务调用错误、服务调用异常、远程调用错误、top解析错误a服务调用错误服务调用错误,是指通过top校验进入后端调用服务以后,由于不符合进一步的业务逻辑校验而出现的错误如发布商品的属性不符合商品类目的要求,评价的交易已经过期等等这些错误在
2.0的返回子错误码为XXX-service-error用户遇到这种返回表明top的服务是正常的,是用户的参数不合规定所引起请根据返回的具体msg和sub_msg内容定位问题,然后改正入参后再调用如果确认参数正确却一直通不过调用,请联系技术支持的同学咨询情况,切勿盲目重试b服务调用异常服务调用异常是指服务调用过程中由于后端服务器没有响应或者产生了异常或者top服务本身产生了未被捕获的异常而产生的错误这些错误在
2.0的返回子错误码为XXX-service-unavailable这种错误有可能是后端服务暂时不可用所引起的,所以用户遇到这种错误时首先应该查看返回的错误信息里面有没有有效的提示信息,如果有请先按照提示改正问题再调用;如果没有有效的提示信息,请等待一段时间再调用如果一直都是这个错误,请联系技术支持查看问题所在切忌立即反复重试c远程调用错误远程调用错误是指top在调用后方服务时发生了调用错误或超时的情况这类错误可能是由于后端服务过于繁忙或者服务失效引起的这些错误在
2.0的返回子错误码为remote-service-error,remote-service-timeout,remote-connection-error用户遇到这种情况,首先考虑的是等待一段时间重试看服务是否恢复如果服务已经恢复,则这个只是短时间服务过于拥挤造成的;如果多次重试仍然是不可用,那么这个可能是后端服务出了问题,请联系技术支持进行处理dTop解析错误Top解析错误目前主要针对的是用户调用top服务时产生的未被捕获的空指针或者参数转换异常所产生的错误这些错误是由于用户的请求有错误引发了top本身的服务流程的潜在隐患所引起的在
2.0的返回子错误码为top-parse-error用户遇到这种问题时,请先仔细检查自己的参数,根据文档说明修改完善以后再尝试调用,一般正常情况,只要入参合法是能够成功的如果确定参数正确的前提下还是调用报这个错误,请联系技术支持的同学反馈这个问题
6、返回参数缺失处理返回参数缺失是指用户调用api返回成功,但是消息体里面的内容和所请求的内容不一致的情况这种情况细分可以分为三种情况整个消息体为空、消息体缺少文档定义的结构返回、返回的结构体中缺少fields指定的某些字段的返回
1.整个消息体为空或缺少文档中说明的结构体返回整个消息体为空或缺少文档中说明的结构体是指返回结果是非失败的情况下,得到的Response的body内容和文档定义不一致(比文档写到要缺少某些内容)的情况例如调用新增商品接口,正常的
2.0的返回结果是{item_add_response:{item:{iid:699e0a75fcea3966d1d57fc8278c674bcreated:2009-10-2215:08:42}}}根据文档的说明添加商品成功的返回结构体中包含的数据就是这样以此种返回结果举例,整个消息体为空的情况是指返回的结果为{}或{item_add_response:}这个消息体里面什么东西都没有,既没有报错的信息,也没有成功响应的数据在里面如果遇到此种情况,并且这个情况是在某种条件下重复出现的,这表示top后端服务的流程出现了异常流程,请尽快联系top的技术支持反馈问题缺少文档中说明的结构体,以上述添加商品的
2.0服务的例子来说,返回回来的结构可能就是{item_add_response:{item:{iid:699e0a75fcea3966d1d57fc8278c674b}}}、{item_add_response:{item:{created:2009-10-2215:08:42}}}、{item_add_response:{item:{}}}……等等情况如果用户遭遇了这个情况,并且这种情况是可重复出现的,并且切换参数也还是这样,这说明top的调用成功了,但是服务器返回的数据出现了不正常的情况请联系技术支持的同学反馈问题
2.缺少fields指定字段返回这种问题是指用户调用接口返回成功,并且返回结果的结构也符合文档中的说明,但是在结构体中缺少了自己fields中指定的字段如用户调用taobao.item.get接口,指定了fields为num_iidtitlepriceskuitem_imgprop_img,但是返回的Item结构体中只包含了num_iidtitlepriceskuitem_img字段,prop_img字段没有返回用户遇到这类型问题的时候,首先第一步要做的事情是查看文档,仔细根据版本确认自己传入的fields参数是不是正确的因为top
1.0和top
2.0的某些字段命名是不一样的,如果传错了fields字段,那么这个字段就不会有返回如果用户确认自己的参数名称没有传错,但是就是么有结果返回,这个时候用户应该确认这个商品是否真的包含你所指定的参数因为如果调用的结果就是不包含这个参数的,那么用户一定拿不到的用户可以通过如下两种方法进行测试其一,在页面上打开这个商品,如果页面显示也没有这部分信息的话,那么说明这个商品就是不包含这部分信息的;其二,更换指定的参数进行测试(如获取另外一个确实有这个字段的商品看看有没有返回)如果其他的参数能够获取到这个字段,说明是这个商品的数据问题,应作为正常流程处理掉如果其他的确认有这个字段的参数仍然获取不到这个字段(也就是说无论传入什么参数都获取不到这个字段了),请联系技术支持的同学反馈问题,top的开发人员会去查看这些问题的
7、总结Isv开发top应用总会遇到n多的问题这些问题有些是用户调用错误造成的,有些是top平台服务错误造成的,有些是网络通信产生的但总的看起来,绝大部分的错误调用都不是简单的请求重试可以解决的因为top的逻辑比较复杂,用户传入的参数很多时候是会出现校验不通过的现象的,建议isv在每次调用出错的时候能把错误信息反馈给用户,让用户来决定是重试还是修正入参后再尝试,isv不应该在后台一直反复的重试当isv遇到调用错误时,首先应该尽量将自己的请求信息和响应信息保存下来,方便后面的问题分析同时isv也应该定期的关注top的文档更新,里面对于淘宝的业务改动会做出一定的说明当isv编写代码或调试问题的时候应该尽量仔细的查看top的文档,虽然写得不是很好,但是对于用户避免一些问题还是很有帮助的另外具体的API错误信息可以到开放平台网站的错误码一览表中查看Top一直在不断改进中,欢迎大家将自己遇到的问题反馈给我们,让我们共同成长。