다음은 저에게 효과가있는 델파이 코드입니다. 단순히 목적에 맞게 매개 변수의 값을 변경하고 자신의 비밀 키를 입력하십시오. 지금 TimeStamp를 2.4 시간 더 추가했습니다 - 자신의 목적에 맞게 변경하십시오.
procedure TForm1.ButtonWorksClick(Sender: TObject);
var
toHash, SecretAccessKey, dirstr, awssignature, sg, ts, link: String;
sig: T160BitDigest;
SystemTime1: SYSTEMTIME;
dt1: TDateTime;
begin
GetSystemTime(SystemTime1);
dt1 := SystemTimeToDateTime(SystemTime1) + 0.1;
ts := '&Timestamp=' + HTTPEncode(FormatDateTime('yyyy"-"mm"-"dd"T"hh":00:00.000Z', dt1));
tohash := 'GET' + Chr(10) + 'ecs.amazonaws.com' + Chr(10) + '/onca/xml' + Chr(10) +
'AWSAccessKeyId=AKIAID6DSLQQRYN3MDQA&AssociateTag=locboo01-20&Keywords=031238792X&Operation=ItemSearch&SearchIndex=Books' +
'&Service=AWSECommerceService&SignatureMethod=HmacSHA1&SignatureVersion=2' + ts + '&Version=2011-08-01';
SecretAccessKey := 'Your secret key here';
Sig := cHash.CalcHMAC_SHA1(SecretAccessKey, tohash);
dirstr := cHash.SHA1DigestAsString(Sig);
awssignature := EncdDecd.EncodeString(dirstr);
sg := HTTPApp.HTTPEncode(awssignature);
link := 'http://ecs.amazonaws.com/onca/xml' + '?' +
'AWSAccessKeyId=AKIAID6DSLQQRYN3MDQA&AssociateTag=locboo01-20&Keywords=031238792X&Operation=ItemSearch&SearchIndex=Books' +
'&Service=AWSECommerceService&SignatureMethod=HmacSHA1&SignatureVersion=2' + ts + '&Version=2011-08-01' + '&Signature=' + sg;
Clipboard.AsText := link;
Memo1.Lines.Add(sg);
end;
저는 서명이 ** Timestamp ** 매개 변수와 관련이 있다고 생각합니다. – ComputerSaysNo
예, 여기에 모두 "설명 됨"입니다 : – user1355041
예, 당신은 틀림 없습니다. 여기에 모두 설명되어 있습니다. http://docs.aws.amazon.com/AWSECommerceService/latest/DG/rest-signature.html 그러나 코드를 작성할 때 제대로 작동하지 않습니다. 누군가 코드 스 니펫을 제공 할 정도로 친절 할 수 있는지 궁금합니다. 나는 온통 인터넷 검색하고 델파이 – user1355041