哪个版本的 httpclient 与 Amazon SDK v 1.11.5 兼容?

Posted

技术标签:

【中文标题】哪个版本的 httpclient 与 Amazon SDK v 1.11.5 兼容?【英文标题】:What version of httpclient is compatible with the Amazon SDK v 1.11.5? 【发布时间】:2016-06-07 21:03:43 【问题描述】:

我使用的是 Amazon Java SDK,版本 1.11.5(我将 aws-java-sdk-1.11.5.jar 包含在我的 WEB-INF/lib 目录中)。我需要包含与此版本的 AWS 开发工具包兼容的 Apache httpclient 库的哪个版本?我尝试了httpclient-4.3.4.jar,但出现以下错误

15:34:25,366 ERROR [io.undertow.request] (default task-34) UT005023: Exception handling request to /pluginwiris_engine/app/service: java.lang.NoSuchMethodError:    org.apache.http.conn.ssl.SSLConnectionSocketFactory.<init>(Ljavax/net/ssl/SSLContext;Ljavax/net/ssl/HostnameVerifier;)V
    at com.amazonaws.http.conn.ssl.SdkTLSSocketFactory.<init>(SdkTLSSocketFactory.java:56)
    at com.amazonaws.http.apache.client.impl.ApacheConnectionManagerFactory.getPreferredSocketFactory(ApacheConnectionManagerFactory.java:87)
    at com.amazonaws.http.apache.client.impl.ApacheConnectionManagerFactory.create(ApacheConnectionManagerFactory.java:65)
    at com.amazonaws.http.apache.client.impl.ApacheConnectionManagerFactory.create(ApacheConnectionManagerFactory.java:58)
    at com.amazonaws.http.apache.client.impl.ApacheHttpClientFactory.create(ApacheHttpClientFactory.java:46)
    at com.amazonaws.http.apache.client.impl.ApacheHttpClientFactory.create(ApacheHttpClientFactory.java:37)
    at com.amazonaws.http.AmazonHttpClient.<init>(AmazonHttpClient.java:213)
    at com.amazonaws.AmazonWebServiceClient.<init>(AmazonWebServiceClient.java:145)
    at com.amazonaws.services.s3.AmazonS3Client.<init>(AmazonS3Client.java:393)
    at com.amazonaws.services.s3.AmazonS3Client.<init>(AmazonS3Client.java:373)
    at com.amazonaws.services.s3.AmazonS3Client.<init>(AmazonS3Client.java:355)
    at com.amazonaws.services.s3.AmazonS3Client.<init>(AmazonS3Client.java:327)
    at com.amazonaws.services.s3.AmazonS3Client.<init>(AmazonS3Client.java:309)

感谢您的额外帮助, - 戴夫

【问题讨论】:

【参考方案1】:

查看 Java AWS SDK 的源代码,在标签 1.11.5,you can see the in the POM file 下,他们指定了以下内容:

<httpcomponents.httpclient.version>4.5.2</httpcomponents.httpclient.version>

所以我想说 HTTP 客户端版本 4.5.2 与 AWS 开发工具包版本 1.11.5 兼容。如果您使用的是像 Maven 这样的依赖管理工具,您总是可以让它拉入指定 AWS 开发工具包的 HTTP 客户端版本。

【讨论】:

我尝试添加这个 jar,但我仍然得到同样的错误,你需要修复它吗? @moondaisy 你的类路径中可能有另一个版本的 httpclient。 @LizBennett 是的,最后这是tomcat中webapp文件夹中旧版本的问题 对我不起作用。我取出了我的 http 核心和 http 客户端库,但它仍然无法运行。我也在使用 apache http fluent 客户端,可能是引入了不兼容的版本。 谢谢。从 httpclient-4.5.13.jar 迁移到 httpclient-4.5.2.jar 为我解决了这个问题。【参考方案2】:

查看maven repo for aws-java-sdk-core处的编译依赖

你可以看到它依赖于 org.apache.httpcomponents » httpclient -- 4.5.2。进一步检查您是否拥有所有dependencies of httpclient-4.5.2。您可能缺少正确版本的 httpcore

【讨论】:

以上是关于哪个版本的 httpclient 与 Amazon SDK v 1.11.5 兼容?的主要内容,如果未能解决你的问题,请参考以下文章

Amazon MQ 客户端使用哪个 TLS/SSL 版本连接到代理?

如何在不使用 SDK 的情况下使用 .NET HttpClient 上传到 Amazon S3

httpclient与httpcore版本不匹配导致的编译问题

httpclient 怎么模拟是哪个浏览器

请问有org.apache.commons.httpclient.HttpClient.*的jar是哪个?该去哪儿下载

URLConnection 或 HTTPClient:哪个提供更好的功能和更高的效率?