使用 TransferManager 时如何从服务器响应访问自定义 header ?
我们在服务器的响应中添加了一个自定义 header ,从客户端我们使用默认传输管理器的分段上传
有什么建议我可以如何连接它吗?
所以基本上我想传递来自类中找到的 return response.getAwsResponse();
的响应:AmazonS3Client
方法
private <X, Y extends AmazonWebServiceRequest> X invoke(Request<Y> request,
HttpResponseHandler<AmazonWebServiceResponse<X>> responseHandler,
String bucket, String key, boolean isAdditionalHeadRequestToFindRegion) {
该响应将具有来自包含我所追求的自定义石南花的服务器的 HTTP 响应,基本上是当文件 100% 完成时发回的唯一 ID,以便我可以操作它。
我需要将这个自定义 header 从响应传递到我使用传输管理器和 upload.waitForCompletion() 的一开始, 我也不想编辑亚马逊的,
那么有谁知道是否有一个接口(interface)或其他一些对象可以让我访问它?
最佳答案
在对框架进行一些调试之后我坚信使用时没有办法访问http响应>传输管理器
对于我们想要做的事情,我们需要在文件上传完成并组装时从服务器发送一个唯一的 ID 到客户端
** 因此,如果您不介意不使用 TransferManager 的优点,您可以编写“您自己的 TransferMananger”,这样您就可以完全控制,但同样在客户端,我们真的不想添加自定义代码,但有一个标准且简单的方法(但这适用于我的场景),如果您决定手动执行它,我已经尝试过并且可以工作!
因此,作为替代方案,我们通过 eTag 从服务器发送,这不是很好,但可以完成工作并保持客户端简单干净
关于如何以更好的方式发回此值有什么建议吗?
Upload up = tm.upload(bucketName, file.getName(), file);
UploadResult result = (UploadResult) ((UploadImpl) up).getMonitor().getFuture().get();
String uniqueIdFromServer = result.getETag();
关于java - Amazon S3 AWS SDK [Java] - 分段上传如何在http响应中获取自定义 header ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51984755/