本文对使用移动网关过程中出现的结果码进行说明,方便您进行问题排查。
网关侧结果码
1000 为 API 调用成功,其他都是失败的错误码。
1001-5999、7XXX 为网关错误。
其中,7XXX 表示无线保镖验签或解密报错,具体参见 无线保镖结果码说明 进行排查。
除结果码外,您还可以查看响应 Header 中的
Memo
和tips
字段,以了解更多错误信息。专有云用户还可以通过网关服务器上的
~/logs/gateway/gateway-error.log
日志查看详细错误信息。
当发生异常时,可以尝试通过网关异常排查进行排查。欲了解具体信息,参见 网关异常排查。
结果码 | 描述 | 解释 |
1000 | 处理成功 | 网关 API 调用处理成功。 |
1001 | 拒绝访问 | Mock 格式错误,缺少 |
1002 | 调用次数超过限额 | 开启 限流配置 后,当触发限流时会导致该异常。 |
1005 | 未授权 | 开启 API 授权 后,API 调用时授权校验失败。 |
2000 | 登录超时 | 开启授权校验功能,非登录状态会触发该异常。 |
3000 | RPC 接口不存在或关闭 | 在当前 workspaceId 对应的环境下,appId 对应的移动应用没有配置该 operationType 的 API 服务,或者该 API 服务不处于 开放 状态。 |
3001 | 请求数据为空 | 客户端请求数据中的 |
3002 | 数据格式有误 | RPC 请求格式有问题。专有云用户可以在服务端日志 |
3003 | 数据解密失败 | 数据解密失败。 |
4001 | 服务请求超时 | MGS 调用业务系统服务超时。后端业务系统负载过高导致,需排查后端系统的运行情况。若超时设置不合理,可以适当调整。注:默认超时时间为 3s。 |
4002 | 远程调用业务系统异常 | MGS 调用业务系统服务出现异常。专有云用户可以在服务端日志 |
4003 | API 分组 HOST 异常 | MGS 调用 HTTP 业务系统服务出现 |
5000 | 未知异常 | 其他严重错误。专有云用户可以在服务端日志 |
7000 | 没有设置公钥 | 移动 APP 中无线保镖中无 appId 对应的密钥或者网关无法获取 appId 对应的签名密钥。 |
7001 | 验签的参数不够 | 网关服务端验证签名不通过。 |
7002 | 验签失败 | 网关服务端验证签名不通过。 |
7003 | 验签-时效性失败 | API 请求入参 ts 时间戳超过系统设置的时间有效性。需要检查客户端时间是否为系统时间。 |
7007 | 验签-缺少 ts 参数 | API 请求缺少验签 ts 参数。 |
7014 | 验签-缺少 sign 参数 | API 请求缺少验签 sign 参数。一般情况下是客户端签名数据失败,导致缺失 sign 参数。请检查客户端无线保镖图片是否正确。 |
8002 | 跨域预检请求(CORS preflight) | 跨域预检请求。 |
业务侧结果码
以下结果码可在业务系统服务器内部查看错误信息。
通过查看各个业务系统上的 ~/logs/mobileservice/monitor.log
日志可确定异常具体信息。
结果码 | 适用协议 | 描述 | 解释 |
6000 | MPC、DUBBO | RPC-目标服务找不到 | 发布的服务(service)无法找到,服务器无法访问或者服务已迁移。 |
6001 | MPC、DUBBO | RPC-目标方法找不到 | 发布的该 service 内的方法无法找到。 |
6002 | MPC、DUBBO | RPC-参数数目不正确 | 传入的参数个数,与声明的参数个数不相等。 |
6003 | MPC、DUBBO | RPC-目标方法不可访问 | 目标方法不能被调用。 |
6004 | HTTP、MPC、DUBBO | RPC-JSON 解析异常 | HTTP:将 RPC 参数转换为后端 HTTP 请求参数时发生异常。MPC/DUBBO:将 RPC JSON 数据反序列化为业务参数对象时失败。 |
6005 | MPC、DUBBO | RPC-调用目标方法时参数不合法 | 反射调用时,参数不合法。 |
6007 | MPC、DUBBO | RPC-验证登录服务不可用 | 没有实现 SPI 包中验证登录接口或者验证登录接口配置出错。 |
6666 | HTTP、MPC、DUBBO | RPC-业务抛出异常 | HTTP:后端系统返回 HTTP status code 不等于200。MPC/DUBBO:业务方抛出的异常。RPC 无法处理,统一为业务异常。 |
Android 客户端结果码
结果码 | 描述 | 提示文案 |
0 | 未知错误 | 未知错误,请稍后再试 |
1 | 客户端找不到通讯对象,没有设置 Transport | 网络出错,请稍后再试 |
2 | 客户端没有网络,如用户关闭了网络或者禁止了应用的网络权限 | 网络无法连接 |
3 | SSL相关错误,包括 SSL 握手错误,SSL 证书错误 | 客户端证书有误,请检查手机的时间设置是否准确。 |
4 | 客户端网络连接超时,TCP 建连超时,目前超时时间为 10s | 网络欠佳 |
5 | 客户端网络速度过慢,数据读写超时,socketTimeout 的场景 | 网络欠佳 |
6 | 客户端请求服务端无响应,NoHttpResponseException | 网络出错,请稍后再试 |
7 | 客户端网络 IO 错误,对应 IOException | 网络出错,请稍后再试 |
8 | 客户端网络请求调度错误,执行线程中断异常 | 网络出错,请稍后再试 |
9 | 客户端处理错误,包括序列化错误、注解处理错误、线程执行错误 | 网络出错,请稍后再试 |
10 | 客户端数据反序列化错误,服务端数据格式有误 | 网络出错,请稍后再试 |
13 | 请求中断错误,例如线程中断时网络请求会被中断 | 网络出错,请稍后再试 |
15 | 客户端网络授权错误,HttpHostConnectException,Connection to xxx refused,无网络或者对应服务器拒绝连接 | 网络无法连接 |
16 | DNS 解析错误 | 网络无法连接,请稍后再试 |
18 | 网络限流,客户端限流,当客户端请求流量超过阈值后会被限制网络请求 | 网络限流,请稍后再试 |
code ≧ 400 和 code < 500 | HTTP 响应码为 4xx | 网络无法连接 |
400 > code ≧ 100 和 500 < code < 600 | HTTP 非成功的响应码 | 网络无法连接,请稍后再试 |
iOS RPC 请求返回错误码
值 | 状态码 | 含义 |
0 | kDTRpcNetworkError | 网络无法连接。 重要 网络失败均会都被归属到这里,具体失败 error 会通过 userinfo 透传出去,userinfo 字典里获取对应 error 的 key 值为 kDTRpcErrorCauseError。 |
1 | kDTRpcEmptyResponse | 服务端返回的数据为空。 |
2 | kDTRpcInvalidJSONString | 服务端返回的 JSON 字符串格式不正确,不能成功转换成 JSON 对象。 |
3 | kDTRpcDecodeObjectError | 反序列化 JSON 对象出错。 |
4 | kDTRpcNetworkCancelled | 网络已取消。 |
5 | kDTRpcEncodeObjectError | 序列化 JSON 对象出错。 |
6 | kDTRpcProtocolBuffersDecodeError | 反序列化 PB 对象出错。 |
9 | KDTRpcSizeControlError | RPC 太大会直接抛出异常(这个 error 委托给了调用方)
|
24 | KDTRpcAbandonError | 账号切换时登录 RPC 之后返回 RPC 被丢弃,直接抛出异常。 |
3003 | / | 解密出错。 |