上传图片到 Amazon s3 Retrofit 失败:超时

Uploading Image to Amazon s3 Retrofit Failure: Timeout

我正在尝试使用改装中的自定义 url 上传文件。

这是我如何制作请求正文:

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

我恢复图像了吗?怎么了?

终于解决了这个问题。事实证明,Retrofit 有一个默认的 10 秒。超时(请参阅详细信息 )。

这会中断或停止改装部分的上传。

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

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

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