将图像上传到亚马逊s3改装失败:超时

时间:2016-06-21 14:54:00

标签: android amazon-s3 amazon retrofit2 okhttp3

我试图在改造中使用自定义网址上传文件。

以下是我发出请求的方式:

RequestBody fileBody = RequestBody.create(MediaType.parse(artifactHeaders.getContentType()), file);

这是界面:

@PUT
Call<ResponseBody> uploadArtifactToAmazon2(@Url String artifactUrl,
                                           @Header("Content-Disposition") String contentDisposition,
                                           @Header("x-amz-server-side-encryption") String xAmzServerSideEncryption,
                                           @Header("x-amz-security-token") String xAmzSecurityToken,
                                           @Header("Content-Type") String contentType,
                                           @Body RequestBody requestBody);

但是我在日志中得到了这个:

06-21 10:41:16.354 4760-4808/ 
D/OkHttp: 4�IDATx�<�g�dYv��������j7��cvf�c�5XR����!�06-21 10:41:16.354 4760-4808/D/OkHttp: E�R($�B����"()��D��.�avfz�{zf�Ww�̪J��|/��"������|ޖ�9�?9���Ȧʰ��uv���V���
06-21 10:41:16.504 4760-4808/D/OkHttp: �R>a1�~�`.�>����IOhQS�a�B>��=h0
     [- - - HUNDREDS OF THESE LINES CONTINUE ]
06-21 10:41:16.567 4760-4808/D/OkHttp: Content-Type: image/png
06-21 10:41:16.567 4760-4808/D/OkHttp: Content-Length: 669719

几秒钟后,日志给了我这个:

06-21 10:41:16.626 4760-4808/D/!!!: Cookie Name: __cfduid Cookie Value: df052a1723cd06647966e629e113d4a461466515894 Expiry: Wed, 21-Jun-2017 14:41:14 GMT+00:00
06-21 10:41:28.040 4760-4808/D/!!!: Cookie Name: __cfduid Cookie Value: df052a1723cd06647966e629e113d4a461466515894 Expiry: Wed, 21-Jun-2017 14:41:26 GMT+00:00
06-21 10:41:39.014 4760-4760/D/!!!: Failure Code: timeout

我收回图片了吗?怎么了?

1 个答案:

答案 0 :(得分:0)

终于解决了这个问题。事实证明,Retrofit默认为10秒。超时(见详情here)。

这会在改装中断或停止上传。

我在日志中看到的字符(我正在使用HttpLoggingInterceptor.Level.BODY)。解决方案是设置超时持续时间:

httpClient.readTimeout(10, TimeUnit.MINUTES)
            .connectTimeout(10, TimeUnit.MINUTES)

我的下一个任务是确定文件上传所需的时间,并使用它来设置超时持续时间或正确处理超时事件。