2012-02-09 9 views
1

Amazonの商品広告フォーラムに投稿しましたが、誰も応答していないので、ここの誰かが私を助けてくれるかもしれません。Amazon ItemSearchリクエストは有効ですが、PHP SoapClientを使用して返される結果はありません

キーワードに基づいて表示するアイテムをいくつか取得しようとしていますが、これまでのところこのコードがあり、実行時にはの有効なが返されますが、返されるアイテムはありません。 PHP SoapClientを使用する。誰かが間違っていることを指摘できますか?ここで

は私のコードです:あなたは、応答には、実際のアイテムはありません見ることができるように

object(stdClass)#5 (2) { 
    ["OperationRequest"]=> 
    object(stdClass)#6 (4) { 
    ["HTTPHeaders"]=> 
    object(stdClass)#7 (1) { 
     ["Header"]=> 
     object(stdClass)#8 (2) { 
     ["Name"]=> 
     string(9) "UserAgent" 
     ["Value"]=> 
     string(26) "PHP-SOAP/5.3.6-13ubuntu3.3" 
     } 
    } 
    ["RequestId"]=> 
    string(36) "###" 
    ["Arguments"]=> 
    object(stdClass)#9 (1) { 
     ["Argument"]=> 
     object(stdClass)#10 (2) { 
     ["Name"]=> 
     string(7) "Service" 
     ["Value"]=> 
     string(19) "AWSECommerceService" 
     } 
    } 
    ["RequestProcessingTime"]=> 
    float(0.085933) 
    } 
    ["Items"]=> 
    object(stdClass)#11 (1) { 
    ["Request"]=> 
    object(stdClass)#12 (2) { 
     ["IsValid"]=> 
     string(4) "True" 
     ["ItemSearchRequest"]=> 
     object(stdClass)#13 (2) { 
     ["Keywords"]=> 
     string(4) "book" 
     ["ResponseGroup"]=> 
     string(6) "Medium" 
     } 
    } 
    } 
} 

<?php 

define("ACCESS_KEY",'###'); 
define("SECRET_KEY",'###'); 
define("ASSOCIATE_TAG",'###'); 

$timeStamp = gmdate("Y-m-d\TH:i:s\Z"); 
$function = "ItemSearch"; 
$string = $function.$timeStamp; 

$signature = base64_encode(hash_hmac("sha256", $string, SECRET_KEY, True)); 

$client = new SoapClient('http://webservices.amazon.com/AWSECommerceService/AWSECommerceService.wsdl'); 
//var_dump($client->__getFunctions()); 

$params = array(
    "Operation"=>$function, 
    "AssociateTag"=>ASSOCIATE_TAG, 
    "Request"=>array("Keywords"=>"book","ResponseGroup"=>"Medium") 
); 

$header_arr = array(); 
$header_arr[] = new SoapHeader('http://security.amazonaws.com/doc/2007-01-01/', 'AWSAccessKeyId', ACCESS_KEY); 
$header_arr[] = new SoapHeader('http://security.amazonaws.com/doc/2007-01-01/', 'Timestamp', $timeStamp); 
$header_arr[] = new SoapHeader('http://security.amazonaws.com/doc/2007-01-01/', 'Signature', $signature); 
$client->__setSoapHeaders($header_arr); 

$result=$client->__soapCall($function, array($params)); 
var_dump($result); 

?> 

そして、ここでは、私がキーワード書籍ために得る応答です。私は完全に異なるものを手に入れているのですが、ドキュメントから、応答には何らかの種類のTotalResults属性があるはずです。

答えて

2

明らかに問題は、SearchIndexをデフォルトにするだけでなく、必要であることを伝えても結果を返さないということでした。

$params = array(
    "Operation"=>$function, 
    "AssociateTag"=>ASSOCIATE_TAG, 
    "Request"=>array("SearchIndex"=>"All","Keywords"=>"book","ResponseGroup"=>"Small") 
); 

だから、上記で要求を置き換えます

関連する問題