使用下面的德爾福XE2(更新4)代碼:SignatureDoesNotMatch錯誤「文/ *」使用TAmazonStorageService.UploadObject
var
ConInfo: TAmazonConnectionInfo;
RespInfo: TCloudResponseInfo;
Service: TAmazonStorageService;
Content: TBytes;
Headers: TStringList;
begin
ConInfo:=TAmazonConnectionInfo.Create(self);
ConInfo.AccountName:='YOUR ACCOUNT NAME';
ConInfo.AccountKey:='YOUR ACCOUNT KEY';
ConInfo.Protocol:='http';
Service:=TAmazonStorageService.Create(ConInfo);
RespInfo:=TCloudResponseInfo.Create;
SetLength(Content, 128);
FillMemory(@Content[0], 128, Byte('x'));
Headers:=TStringList.Create;
Headers.Values['Content-type']:='text/plain';
if not Service.UploadObject('YOUR BUCKET', 'test.txt', Content, TRUE, nil, Headers, amzbaPrivate, RespInfo) then
ShowMessage('Failed:' + RespInfo.StatusMessage);
我總是在呼籲UploadObject得到一個錯誤:
失敗:HTTP/1.1 403禁止 - 我們計算的請求籤名 與您提供的簽名不匹配。檢查您的密鑰並簽署 方法。 (SignatureDoesNotMatch)
這僅當內容類型被設置爲「文本/純」,文本/ html「,或文本什麼事情發生。使用完全相同的代碼,如果您只是將內容類型更改爲任何其他內容類型,例如'video/3gpp',那麼它按預期工作,沒有錯誤。被上傳對象的實際內容是不相關的,並且與獲取錯誤沒有關係。
我已經追蹤了Delphi中的Indy代碼,但我很難理解爲什麼文本內容類型總是會出現這個錯誤。
任何想法?
很高興您能夠自己解決它。當嘗試上傳文本/ html時,這個問題完全相同。當時我使用的只是「html」 - 但隨後Internet Explorer在查看文件時遇到問題。感謝分享!!!!! – 2014-03-11 23:48:49