首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SdkClientException:无法执行HTTP请求:连接已重置

SdkClientException:无法执行HTTP请求:连接已重置
EN

Stack Overflow用户
提问于 2018-09-21 07:40:31
回答 2查看 22.3K关注 0票数 6

我正在尝试将文件上传到亚马逊网络服务s3存储桶。我一直收到这个异常"SdkClientException: Unable to execute HTTP request: Connection reset“。

我正在尝试通过inputstream上传

代码语言:javascript
运行
复制
AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
                .withRegion(Regions.US_EAST_2)
                .withCredentials(new AWSStaticCredentialsProvider(cred))
                .build();
        try {

            ObjectMetadata metadata = new ObjectMetadata();
            metadata.setContentLength(bytesArray.length);
            metadata.setContentType("text/csv");
            s3Client.putObject(new PutObjectRequest(appConfig.getBucketName(), fileName, inStream, metadata).withCannedAcl(CannedAccessControlList.PublicRead));
        }
    ----

下面是详细的例外情况。可能的原因是什么?我的S3存储桶有IAM用户,使用S3完全访问策略。此问题是否与网络或任何其他设置有关?

代码语言:javascript
运行
复制
com.amazonaws.SdkClientException: Unable to execute HTTP request: Connection reset
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.handleRetryableException(AmazonHttpClient.java:1136)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeHelper(AmazonHttpClient.java:1082)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.doExecute(AmazonHttpClient.java:745)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeWithTimer(AmazonHttpClient.java:719)
-------
Caused by: java.net.SocketException: Connection reset
    at java.net.SocketInputStream.read(SocketInputStream.java:209)
    at java.net.SocketInputStream.read(SocketInputStream.java:141)
    at sun.security.ssl.InputRecord.readFully(InputRecord.java:465)
    at sun.security.ssl.InputRecord.read(InputRecord.java:503)
    at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:973)
    at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1375)
    at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1403)
    at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1387)
    at org.apache.http.conn.ssl.SSLConnectionSocketFactory.createLayeredSocket(SSLConnectionSocketFactory.java:396)
    at org.apache.http.conn.ssl.SSLConnectionSocketFactory.connectSocket(SSLConnectionSocketFactory.java:355)
    at com.amazonaws.http.conn.ssl.SdkTLSSocketFactory.connectSocket(SdkTLSSocketFactory.java:142)
    at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:142
EN

回答 2

Stack Overflow用户

发布于 2018-09-22 09:23:23

我发现这是由于防火墙造成的。如果您在调试时设置了logging.level.com.amazonaws,那么它将显示SSL握手失败。

票数 2
EN

Stack Overflow用户

发布于 2021-02-22 22:01:45

如果您在代理后面运行应用程序,则可能会发生这种情况。您可以将代理设置为,

代码语言:javascript
运行
复制
public static void setProxy() {
        System.setProperty("http.proxyHost", "<http-proxy-url>");
        System.setProperty("http.proxyPort", "<port>");

        System.setProperty("https.proxyHost", "<https-proxy-url>");
        System.setProperty("https.proxyPort", "<port>");
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52434691

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档