ossClient.putObject报如下错误:
com.aliyun.oss.OSSException: The request signature we calculated does not match the signature you provided. Check your key and signing method.
[ErrorCode]: SignatureDoesNotMatch
[RequestId]: 5F310D06D934BE3436******
[HostId]: ******.oss-cn-qingdao.aliyuncs.com
[ResponseError]:
<?xml version="1.0" encoding="UTF-8"?>
<Error>
<Code>SignatureDoesNotMatch</Code>
<Message>The request signature we calculated does not match the signature you provided. Check your key and signing method.</Message>
<RequestId>5F310D06D934BE3436******</RequestId>
<HostId>******.oss-cn-qingdao.aliyuncs.com</HostId>
<OSSAccessKeyId>**********</OSSAccessKeyId>
<SignatureProvided>**************************=</SignatureProvided>
<StringToSign>PUT
oss版本为:
<dependency> <groupId>com.aliyun.oss</groupId> <artifactId>aliyun-sdk-oss</artifactId> <version>2.7.0</version> </dependency>
我当时看到这个报错第一个反应就是,上级给我的id和secret是错的,我还去质疑上级,结果我拿自己的账号去测试了一下,还是同样的问题,我才发现这个根本不是id和secret的问题!!马老板是在骗我啊!!
结果发现是putObject的路径写错了!!
public PutObjectResult putObject(String bucketName, String key, InputStream input)
这个方法中的第二个参数,也就是文件路径,其中写了连续的两个/!由于路径本来就很长,一时间还没发现,结果还真是这个原因导致的错误,找了要近1小时,问了好多同事,最后还是自己发现的原因,自己还是太粗心了~~