【问题标题】:Android AWS SDK Version 2.2.1 - gethttprequest depricated, not able to find replacementAndroid AWS SDK 版本 2.2.1 - gethttprequest 已弃用,找不到替代品
【发布时间】:2015-07-24 08:21:00
【问题描述】:

我一直在使用Android AWS SDK 1.4.6 版本来连接亚马逊网络服务的S3object。昨天我已将我的 SDK 更新到 2.2.1,发现 gethttprequest() 方法已被弃用。 该方法目前在com.amazonaws.services.s3.model.S3ObjectInputStream 包中。但是,我也无法在文档中找到该方法的替代方法。

有谁知道,用哪种方法代替 gethttprequest()? 或者任何有用的链接也可以。

提前致谢。

【问题讨论】:

  • 它已被弃用,因为它没有用例并且正在等待在未来版本中删除。你能告诉我你需要它做什么吗?
  • 是的,代码使用它来获取亚马逊服务器的日期和时间,并在应用程序上线时将该组合用于同步服务。
  • 我的问题是,如果他们正在弃用一种方法,那么应该有一些替代品吗?在这种情况下是什么?或者您是说他们认为该方法无用并在将来的版本中将其删除??

标签: android amazon-web-services amazon-s3


【解决方案1】:

导致弃用的原因有两个:

  • 公开实现细节,这会阻止我们逐步淘汰 Apache HttpClient。自 2011 年以来,Android 一直建议我们从 Apache HttpClient 迁移到 HttpURLConnection(参见 http://android-developers.blogspot.com/2011/09/androids-http-clients.html)。考虑到这一点,我们在v2.2.0 release 中引入了Http 传输层的抽象(参见com.amazonaws.http.HttpClient),默认实现UrlHttpClient 由HttpURLConnection 提供支持。在过渡期间仍支持 Apache HttpClient 实现。客户可以使用他们最喜欢的 Http 库(如 Volley 或 OkHttp)来实现它。在此过程中,我们必须弃用或删除任何绑定到特定实现的内容,例如 getHttpRequest(),它返回来自 Apache HttpClient 的类 HttpRequest。
  • 没有getHttpRequest() 的实际用例。它只是为了支持 S3ObjectInputStream.abort() 操作。所有其他用法都不是故意的。在最新版本中,中止是在不使用 getHttpRequest() 的情况下完成的。

响应中的服务器日期或时间不是 Amazon S3 API 的一部分。它应该是正确的,但我建议你不要依赖它。获取日期或时间的方法有很多,比如 NPT 时间服务器或系统。

【讨论】:

  • 谢谢杨帆。你真的解释得很好。正如您所说,我现在使用 AWS SDK 中 Dateutils 中的 formatRFC822Date 方法从服务器获取日期和时间。再次感谢您。
猜你喜欢
  • 1970-01-01
  • 2013-04-28
  • 2021-05-26
  • 2016-05-25
  • 2012-12-01
  • 2014-05-14
  • 1970-01-01
  • 1970-01-01
  • 2022-08-17
相关资源
最近更新 更多