Utilizzando il seguente Delphi XE2 (aggiornamento 4) Codice:errore SignatureDoesNotMatch quando Content-type è 'text/*' utilizzando 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);
ottengo sempre un errore sulla chiamata a UploadObject:
Errore: HTTP/1.1 403 Proibito: la firma della richiesta che abbiamo calcolato non corrisponde alla firma fornita. Controlla la tua chiave e firma il metodo . (SignatureDoesNotMatch)
Questo accade solo quando il tipo di contenuto è impostato su "testo/semplice", "testo/html" o testo. Usando esattamente lo stesso codice, se si modifica il tipo di contenuto in qualsiasi altro tipo di contenuto, ad es. 'video/3gpp', quindi funziona come previsto e senza errori. Il contenuto effettivo dell'oggetto caricato non è rilevante e non ha alcuna rilevanza nell'ottenere l'errore o meno.
Ho tracciato il codice di Indy in Delphi, ma sono perplesso sul motivo per cui il tipo di contenuto del testo dà sempre questo errore.
Qualche idea?
Contento che sei riuscito a sistemarlo da solo. questo stesso identico problema quando provo ad aggiornare il testo/html. Nel momento in cui ho fatto ricorso a solo "html" - ma poi Internet Explorer ha avuto problemi nella visualizzazione dei file. Grazie per aver condiviso !!!!! –