2013-08-16 3 views
0

"지금 구매"링크를 얻고 게임 제품의 실제 가격이 게임 제목과 함께 나타납니다. 그 때문에 "제목으로 검색"(http://docs.aws.amazon.com/AWSECommerceService/latest/DG/EX_SearchingbyTitle.html)을 사용해야합니다.Amazon Product Advertising API : XML 요청 문제

XML 요청에 대한 예제를 발견하고이를 위해 빌드하려고합니다.

예였다 내 검색 값으로 완벽하게 작동하지만,하지

$AWSAccessKeyId = ""; 
$SecretAccessKey = ""; 

$ItemId = "0679722769"; // ASIN 
$Timestamp = gmdate("Y-m-d\TH:i:s\Z"); 
$Timestamp = str_replace(":", "%3A", $Timestamp); 
$ResponseGroup = "ItemAttributes,Offers,Images,Reviews"; 
$ResponseGroup = str_replace(",", "%2C", $ResponseGroup); 

$String = "AWSAccessKeyId=$AWSAccessKeyId& 
AssociateTag=xy& 
ItemId=$ItemId& 
Operation=ItemLookup& 
ResponseGroup=$ResponseGroup& 
Service=AWSECommerceService& 
Timestamp=$Timestamp& 
Version=2009-01-06"; 



$String = str_replace("\n", "", $String); 

$Prepend = "GET\nwebservices.amazon.com\n/onca/xml\n"; 
$PrependString = $Prepend . $String; 

$Signature = base64_encode(hash_hmac("sha256", $PrependString, $SecretAccessKey, True)); 
$Signature = str_replace("+", "%2B", $Signature); 
$Signature = str_replace("=", "%3D", $Signature); 

$BaseUrl = "http://webservices.amazon.com/onca/xml?"; 
$SignedRequest = $BaseUrl . $String . "&Signature=" . $Signature; 

$XML = simplexml_load_file($SignedRequest); 

echo '<a href="'.$SignedRequest.'">XML</a><p>'; 
print_r ($XML); 

. params를 편집했는데 요청이 깨졌습니다.

내 요청 :

$AWSAccessKeyId = ""; 
$SecretAccessKey = ""; 

$ItemId = "Payday2"; // ASIN 
$Timestamp = gmdate("Y-m-d\TH:i:s\Z"); 
$Timestamp = str_replace(":", "%3A", $Timestamp); 
$ResponseGroup = "ItemAttributes"; 
$ResponseGroup = str_replace(",", "%2C", $ResponseGroup); 

$String = "AWSAccessKeyId=$AWSAccessKeyId& 
AssociateTag=xy& 
Operation=ItemSearch& 
SearchIndex=Game& 
Title=$ItemId& 
ResponseGroup=$ResponseGroup& 
Service=AWSECommerceService& 
Timestamp=$Timestamp& 
Version=2009-01-06"; 



$String = str_replace("\n", "", $String); 

$Prepend = "GET\nwebservices.amazon.com\n/onca/xml\n"; 
$PrependString = $Prepend . $String; 

$Signature = base64_encode(hash_hmac("sha256", $PrependString, $SecretAccessKey, True)); 
$Signature = str_replace("+", "%2B", $Signature); 
$Signature = str_replace("=", "%3D", $Signature); 

$BaseUrl = "http://webservices.amazon.com/onca/xml?"; 
$SignedRequest = $BaseUrl . $String . "&Signature=" . $Signature; 

$XML = simplexml_load_file($SignedRequest); 

echo '<a href="'.$SignedRequest.'">XML</a><p>'; 
print_r ($XML); 

내 요청이 작동하지 왜?

감사

내가 여기보고 있어요 두 가지 잠재적 인 문제가있다

답변

1

. 첫 번째는 "Game"이 SearchIndex의 유효한 입력이 아닌 것 같지만 VideoGames는 사용자가 찾고있는 것입니다.

See here for a list of all of them. (미국 외 수 find applicable lists here)

내가 볼 다른 잠재적 인 문제, 그리고 아마존의 API이와 얼마나 유연 확실하지 않다,라는 제목의 게임에 공백이있을 예정이다이다 "Payday 2". 공간을 고치는 것보다 실제로 더 중요한 고려 사항을 제시합니다. 제목을 코딩하는 항목에 얼마나 많은 제어 권한이 있는지에 따라 제목 대신 키워드를 기반으로 검색을 수행하는 것이 더 유연 할 수 있습니다.

+0

SearchIndex를 편집했지만 작동하지 않습니다 : "계산 된 요청 서명이 사용자가 제공 한 서명과 일치하지 않습니다."AWS 보안 액세스 키 및 서명 방법을 확인하십시오. 자세한 내용은 서비스 설명서를 참조하십시오. ". 서명과 키가 올바르게 있습니다. – user1878413

+0

다른 오류입니까 이전에 사용하던 오류입니까? 그건 내가 생각했던 것보다 다른 이슈처럼 보입니다. 또한 원래 검색 쿼리와 함께 작동합니까 아니면 지금도 작동하지 않습니까? 해당 라인을 점검하는 데있어 자주 발생하는 몇 가지 실수 : 키 ID와 비밀 키를 전환하지 않았는지 확인하십시오. 실수로 쉽게 되돌릴 수 있습니다. 계정을 다시 확인하여 쌍이 계속 활성화되어 있는지 확인하십시오. @ user1878413 –

관련 문제