我正在尝试通过以下方式从 s3 上托管的文件中检索标签
public Map<String, String> getTags(@NonNull URI file) {
GetObjectTaggingRequest getTaggingRequest = new GetObjectTaggingRequest(file.getHost(), removeLeadingSeparator(file.getPath()));
GetObjectTaggingResult getTagsResult = s3Client.getObjectTagging(getTaggingRequest);
List<Tag> tagList = getTagsResult.getTagSet();
Map<String, String> out = new HashMap<>();
tagList.forEach(t -> out.put(t.getKey(), t.getValue()));
return out;
}
Run Code Online (Sandbox Code Playgroud)
但我得到以下异常:
com.amazonaws.SdkClientException: Failed to parse XML document with handler class com.amazonaws.services.s3.model.transform.XmlResponsesSaxParser$GetObjectTaggingHandler
Run Code Online (Sandbox Code Playgroud)
我的 URI 格式 s3://bucket/s3_key
我在 s3 上做的其他请求正常工作
https://docs.aws.amazon.com/AmazonS3/latest/dev/tagging-manage-javasdk.html
完整堆栈跟踪:com.amazonaws.SdkClientException:无法使用处理程序类 com.amazonaws.services.s3.model.transform.XmlResponsesSaxParser$GetObjectTaggingHandler 解析 XML 文档
at com.amazonaws.services.s3.model.transform.XmlResponsesSaxParser.parseXmlInputStream(XmlResponsesSaxParser.java:156)
at com.amazonaws.services.s3.model.transform.XmlResponsesSaxParser.parseObjectTaggingResponse(XmlResponsesSaxParser.java:489)
at com.amazonaws.services.s3.model.transform.Unmarshallers$GetObjectTaggingResponseUnmarshaller.unmarshall(Unmarshallers.java:296)
at com.amazonaws.services.s3.model.transform.Unmarshallers$GetObjectTaggingResponseUnmarshaller.unmarshall(Unmarshallers.java:292)
at com.amazonaws.services.s3.internal.S3XmlResponseHandler.handle(S3XmlResponseHandler.java:62)
at com.amazonaws.services.s3.internal.ResponseHeaderHandlerChain.handle(ResponseHeaderHandlerChain.java:44)
at com.amazonaws.services.s3.internal.ResponseHeaderHandlerChain.handle(ResponseHeaderHandlerChain.java:30)
at com.amazonaws.http.response.AwsResponseHandlerAdapter.handle(AwsResponseHandlerAdapter.java:70)
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.handleResponse(AmazonHttpClient.java:1503)
at …Run Code Online (Sandbox Code Playgroud) 我尝试创建以下 api:
@GetMapping("/workerslist")
public List<Worker> getWorkersList(
@RequestParam(name = "lastPollBefore", required = false) OffsetDateTime lastPollBefore,
@RequestParam(name = "lastPollAfter", required = false) OffsetDateTime lastPollAfter){
return workerService.getWorkers(lastPollBefore, lastPollAfter);
}
Run Code Online (Sandbox Code Playgroud)
但是当我调用它时,我收到以下错误:
{
"_type": "ValidationError",
"key": "validation-error",
"message": "Failed to convert value of type 'java.lang.String' to required type 'java.time.OffsetDateTime'; nested exception is org.springframework.core.convert.ConversionFailedException: Failed to convert from type [java.lang.String] to type [@org.springframework.web.bind.annotation.RequestParam java.time.OffsetDateTime] for value '2020-07-01T11:52:57.152Z'; nested exception is java.lang.IllegalArgumentException: Parse attempt failed for value [2020-07-01T11:52:57.152Z]",
"constraints": [
]
}
Run Code Online (Sandbox Code Playgroud)
我找到了 localDateTime 的解决方案,但它们似乎不适用于 offsetDateTime,
Java 中哪种数据类型可以处理最大值?
我必须存储不带逗号的大数字(我还不知道实际大小)。
在 C 中,我认为我会使用类似 unsigned long int 的东西。
Java 中最适合使用什么类型?