急,今天突然无法格式转换

阅读次数 87

错误: convert to pdf headers : {Authorization=WPS-2:AK20230614WLBILP:4304c07d5a89eb0a506a7d3668abd8c4a380252f, Date=Mon, 3 Jul 2023 01:36:44 GMT, Content-Type=application/json, Content-Md5=22d5b065a07ef5bee21c8ce0c45cba5d}
返回错误:
{"code":30003,"message":"InvalidSignature","hint":"not a valid datetime or too skewed. Date: Mon, 3 Jul 2023 01:36:44 GMT","extra":""}

3 Answers

您好,response中的hint,表示出错的原因。 您的Date与实际时间相差太大,需要使用当前时间。

// 获取当前时间 ZonedDateTime now = ZonedDateTime.now(ZoneId.of("GMT")); // 使用 RFC1123 格式化器格式化时间
return now.format(DateTimeFormatter.RFC_1123_DATE_TIME);

同样不行,也是“not a valid datetime or too skewed”异常

比如我当前时间算出来为 Date: Mon, 03 Jul 2023 02:36:10 GMT 你可以参考下你算出来的Date值

Mon, 3 Jul 2023 02:53:01 GMT 看起来跟当前的时间没什么差距

@技术支持-Sirius 你们的服务是不是变更什么东西了,我们线上的代码一直没动过,之前都是正常的,今早突然不行了。

您好,

您计算日期的代码大概应该这么写:

ZonedDateTime now = ZonedDateTime.now(ZoneId.of("GMT"));
String formattedTime = now.format(DateTimeFormatter.ofPattern("E, dd MMM yyyy HH:mm:ss z"));

我们要求的日期格式是两位,所以应该是 03 而不是 3。为什么一直没有改过代码,但是现在才开始出问题也很好理解,之前测试的时候是6月中下旬,日期已经是天然 xx 两位了,所以一直没有问题。但是现在是7月头,要在单日期前补 0 所以就有问题了。