나는 Amazon 광고 API를 사용하여 델파이 애플리케이션을 보유하고 있습니다. ItemSearch를 얻으려고하면 항상 HTTP 오류 400 Bad Request가 발생합니다.왜 Amazon 광고 API에서 항상 잘못된 요청 400이 표시됩니까?
요점은 어디입니까?
내 요청 :
ts := '2014-01-13T15:28:52Z';
sig := GetBase64_HMAC_SHA256(MYSECRETKEY, 'ItemSearch' + ts);
아마존 SOAP의 URL 내가 사용 : 내가 그렇게 서명을 만들
<?xml version="1.0"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<SOAP-ENV:Header>
<SOAP-ENV:Timestamp>2014-01-13T15:28:52Z</SOAP-ENV:Timestamp>
<SOAP-ENV:AWSAccessKeyId>MYACCESSKEYID</SOAP-ENV:AWSAccessKeyId>
<SOAP-ENV:Signature>rzNprsyKGKN2J4JZ8b/GvHqYPqs+kTJe0O5bjdnvHV8=</SOAP-ENV:Signature>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<ItemSearch xmlns="http://webservices.amazon.com/AWSECommerceService/2011-08-01">
<AWSAccessKeyId>MYACCESSKEYID</AWSAccessKeyId>
<Request>
<Keywords>Harry</Keywords>
<SearchIndex>All</SearchIndex>
</Request>
</ItemSearch>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
rio.URL := 'https://webservices.amazon.de/onca/soap?Service=AWSECommerceService';
UPDATE :
내 델파이 코드 :
Cred := TSOAPCredentials.Create;
rio := THTTPRIO.Create(nil);
rio.OnAfterExecute := HTTPRIOAfterExecute;
rio.OnBeforeExecute := HTTPRIOBeforeExecute;
rio.SOAPHeaders.Send(cred);
rio.URL := 'https://webservices.amazon.com/onca/soap?Service=AWSECommerceService';
req := ItemSearchRequest.Create;
req.SearchIndex := 'All';
req.Keywords := 'Harry';
SetLength(ss, 1);
ss[0] := 'Small';
req.ResponseGroup := ss;
SetLength(reqs, 1);
reqs[0] := req;
isearch := ItemSearch.Create;
isearch.AWSAccessKeyId := MYACCESSKEYID;
isearch.Request := reqs;
res := GetAWSECommerceServicePortType(false, '', rio).ItemSearch(isearch);
감사합니다 메이슨, 나는 약간의 미친 오류가 하루 후에. – mad
코드를 수정하여 비누 고장을 일으킬 수 있습니까? 내가 구성 비누 UI를 사용 하여이 API를 시도하고 비누 오류로 오류가 발생했습니다 "요청 서명 매개 변수를 포함해야합니다." 그래서 나는 내 대답에 언급 된 요청을 보내려고했는데 당신의 타임 스탬프가 만료되었거나 액세스 키가 이러한 메시지와 같은 유효한 것이 아니라는 것과 같은 반응을 얻고있다. – kingAm