Usando la siguiente Delphi XE2 (actualización 4) Código:error SignatureDoesNotMatch cuando el tipo de contenido es 'text/*' utilizando 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);
Siempre sale un error en la llamada a UploadObject:
Fallido: HTTP/1.1 403 Prohibido - La firma de la solicitud que calculamos no coincide con la firma que proporcionó. Verifique su clave y firme el método . (SignatureDoesNotMatch)
Esto solo ocurre cuando Content-type está configurado como 'text/plain', 'text/html' o texto. Usando exactamente el mismo código, si simplemente cambia el tipo de contenido a cualquier otro tipo de contenido, p. 'video/3gpp', luego funciona como se esperaba y sin error. El contenido real del objeto que se está cargando no es relevante y no tiene importancia para obtener el error o no.
He rastreado el código de Indy en Delphi, pero no sé por qué el tipo de contenido de texto siempre da este error.
¿Alguna idea?
Me alegro de que haya sido capaz de arreglarlo usted mismo. este mismo problema cuando intento cargar texto/html. En el momento en que recurrí solo a "html" - pero luego Internet Explorer tuvo problemas para ver los archivos. ¡Gracias por compartir! –