全部产品
存储与CDN 数据库 域名与网站(万网) 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网 钉钉智能硬件
阿里云SDK开发指南

问题排查

更新时间:2018-02-11 23:31:42

SDK.CanNotResolveEndpoint

Can not resolve endpoint, please check the user guide

原因

SDK无法自动获取调用的产品在指定地域的endpoint。

解决方法

查看目标产品文档中的API/SDK使用指南,一般会在 开发指南 -> API参考 -> 调用方式 -> 请求结构 页面找到endpoint后,执行以下代码设定endpoint:

  1. request.Domain = "<endpoint>"

参考ECS的 Endpoint列表

SDK.JsonUnmarshalError

Failed to unmarshal response, but you can get the data via response.GetHttpStatusCode() and response.GetHttpContentString()

原因

SDK 反序列化应答失败,大多情况下是由于SDK实际收到的应答结构与ApiMeta不符,例如字段不匹配,格式不正确等原因导致的。

解决方法

  • 在SDK反序列化失败时,您可以忽略,通过提取response类中的原始http应答,依然可以获取应答中的信息。

    阿里云Go SDK依赖了jmespath,因此当应答内容为JSON时,您可以直接使用jmespath来解析应答。

  • 希望您能够将此类问题(通过钉钉群、Github issue等方式)反馈给我们,SDK研发团队会第一时间响应您的反馈,并尽快修复。

示例代码:

  1. response, err := client.CreateInstance(request)
  2. if err != nil {
  3. // 异常处理
  4. if clientErr, isClientErr := err.(*errors.ClientError); isClientErr {
  5. if clientErr.ErrorCode() == errors.JsonUnmarshalErrorCode {
  6. // 您可以直接通过我们的封装方法来分别获取原始应答中的数据
  7. // 应答中的http状态码,类型:int
  8. statusCode := response.GetHttpStatus()
  9. // 应答中的http头,类型:map[string][]string
  10. responseHeader := response.GetHttpHeaders()
  11. // 应答中的body内容,类型:[]byte
  12. responseBytes := response.GetHttpContentBytes()
  13. // 应答中的body内容,类型:string, 等价于`string(response.GetHttpContentBytes())`
  14. responseContent := response.GetHttpContentString()
  15. // 您也可以直接获取原始应答,类型:net/http.Response
  16. httpResponse := response.GetOriginHttpResponse()
  17. }
  18. }
  19. }

SDK.TimeoutError

The request timed out 4 times(3 for retry), perhaps we should have the threshold raised a little?

原因

请求超时,并且重试全部失败。

解决方法

  • 如果存在跨region调用或其他低质量网络场景,建议考虑适当延长超时时间或最大重试次数。
  • 如果频繁出现这个问题,且排除低质量网络场景的情况下,建议您发起工单(按照超时API的产品选择类别)进行询问。

SDK.AsyncFunctionNotEnabled

Async function is not enabled in client, please invoke ‘client.EnableAsync()’ function

原因

在未开启异步请求开关的情况下,调用了异步接口。

解决方法

开启异步功能即可,相关使用方法请参考异步调用

SDK.ServerError:InvalidProtocol.NeedSsl

Your request is denied as lack of ssl protect.Recommend:https://error-center.aliyun.com/status/search?Keyword=InvalidProtocol.NeedSsl&source=PopGw

原因

API只接受HTTPS请求,HTTP请求被拒绝。

解决方法

在发送请求前,添加以下代码:

  1. request.Scheme = requests.HTTPS
本文导读目录