开发者社区 > 云存储 > 对象存储OSS > 正文

使用OSS SDK在开发板上进行上传下载时遇到错误RequestTimeTooSkewed

已解决

硬件及系统: 主MUC架构:armv7 内核版本:linux 4.9.84。
Background:正常使用oss SDK一段时间后,新的需求要求升级openssl1.0.2o -> 1.1.1f,导致其相应的依赖curl7.79.1及oss SDK也进行了重新编译。

问题描述:新的SDK在进行下载时遇到了这个问题,但使用date -u -R以及apr_time_now() 校验本地时间未发现异常。
image.png
image.png

于是写了一个上传sample去抓response body 发现requestTime时间异常。若不保持sdk运行且多次请求响应体的请求时间依旧保持一个定值。
image.png
相应时间改变请求时间仍为定值
image.png

但如果重新运行SDK的话,requestTime会变成另一个定值
image.png

展开
收起
Caby 2024-01-04 11:10:05 207 1
3 条回答
写回答
取消 提交回答
  • 采纳回答

    已解决
    给交叉编译的朋友们提供一个参考
    由于之前编译了x86与arm不同架构的SDK,修改过oss的CMakeList。
    在交叉编译时,务必要在CMakeList的开头指定交叉编译的Toolchain!否则会使用默认的编译器,导致链接apr库时,可能会链接到一些其他版本的apr。
    【由此导致OSS依赖的apr_time_now()获取时间出现错误,OSS处理Http请求头的Date的业务在这(从oss_do_get_object_to_file追到这追了好一会呢...)】
    OssSetHeaderTime.png

    同时自己的SDK依赖了正确的apr库,所以自己调用apr_time_now()打印的时间却是正确的。导致先入为主的认为apr库是没有问题的,使得问题变的很迷惑= =

    2024-01-04 16:35:04
    赞同 1 展开评论 打赏
  • 根据您提供的信息,这个问题可能是由于SDK在运行过程中,requestTime的值没有正确更新导致的。为了解决这个问题,您可以尝试以下方法:

    1. 检查您的代码中是否有对requestTime进行设置的地方,如果有,请确保设置的是正确的时间值。

    2. 在上传和下载操作之前,使用oss_client_options_set_timeout函数设置超时时间,以确保SDK有足够的时间来处理请求和响应。

    3. 如果问题仍然存在,您可以尝试升级OSS SDK到最新版本,看看是否已经解决了这个问题。

    2024-01-05 16:47:38
    赞同 1 展开评论 打赏
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    "RequestTimeTooSkewed"错误通常是由于客户端和服务器之间的时间戳不同步导致的。在开发板上使用OSS SDK进行上传下载时,如果遇到这个错误,可以尝试以下方法解决:

    1. 确保开发板上的时间是准确的。可以使用NTP(网络时间协议)来同步时间。

    2. 检查网络连接是否稳定。如果网络不稳定,可能会导致时间戳不同步。

    3. 在创建OSS客户端时,设置合适的超时时间。例如,可以设置connectTimeoutreadTimeoutwriteTimeout参数。

    4. 如果问题仍然存在,可以尝试升级OSS SDK到最新版本,或者查看阿里云官方文档以获取更多关于这个问题的信息。

    2024-01-04 17:01:37
    赞同 1 展开评论 打赏

对象存储 OSS 是一款安全、稳定、高性价比、高性能的云存储服务,可以帮助各行业的客户在互联网应用、大数据分析、机器学习、数据归档等各种使用场景存储任意数量的数据,以及进行任意位置的访问,同时通过丰富的数据处理能力更便捷地使用数据。

相关产品

  • 对象存储
  • 热门讨论

    热门文章

    相关电子书

    更多
    云存储之OSS实战进阶分享 立即下载
    OSS运维基础实战手册 立即下载
    一个跨平台的云服务SDK需要什么 立即下载