Amazon: Bestseller und Angebote nach Kategorie ausgeben lassen?

FrazeColder

Lt. Commander
Registriert
Okt. 2013
Beiträge
1.718
Moin zusammen,

ich würde mir gerne ein PHP Skript schreiben, mit dem ich Bestseller und Angebote von bestimmten Kategorien bekomme. Wenn ich nun zum Beispiel von der Kategorie Garten, also für die API dann HomeGarden, suchen möchte, möchte gerne einmal die Bestseller aus der Kategorie Garten haben.

Laut der Doku von Amazon funktioniert das auch. Siehe einmal hier für Item Search:
https://docs.aws.amazon.com/AWSECommerceService/latest/DG/ItemSearch.html

Demnach müsste ich also einen Request mittels Folgender URL machen:
Code:
http://webservices.amazon.com/onca/xml?
Service=AWSECommerceService&
AWSAccessKeyId=[AWS Access Key ID]&
AssociateTag=[Associate ID]&  
Operation=ItemSearch&
SearchIndex=HomeGarden&
Sort=salesrank
&Timestamp=[YYYY-MM-DDThh:mm:ssZ]
&Signature=[Request Signature]

Denn ich sage ja SearchIndex=HomeGarden&Sort=salesrank. Das sind mMn genau die Parameter, die ich benötige. Allerdings bekomme ich, wenn ich das so mache, Folgende:

<?xml version="1.0"?>
<ItemSearchResponse xmlns="http://webservices.amazon.com/AWSECommerceService/2013-08-01">
<OperationRequest>
<HTTPHeaders>
<Header Name="UserAgent" Value="ApaiIO [2.2.0]"/>
</HTTPHeaders>
<RequestId>[RequestId]</RequestId>
<Arguments>
<Argument Name="AWSAccessKeyId" Value="[AWS Access Key ID]"/>
<Argument Name="AssociateTag" Value="[Associate ID]"/>
<Argument Name="Operation" Value="ItemSearch"/>
<Argument Name="SearchIndex" Value="HomeGarden"/>
<Argument Name="Service" Value="AWSECommerceService"/>
<Argument Name="Sort" Value="salesrank"/>
<Argument Name="Timestamp" Value="2018-03-06T07:25:22Z"/>
<Argument Name="Version" Value="2013-08-01"/>
<Argument Name="Signature" Value="[Signature]"/>
</Arguments>
<RequestProcessingTime>0.0009293380000000</RequestProcessingTime>
</OperationRequest>
<Items>
<Request>
<IsValid>False</IsValid>
<ItemSearchRequest>
<ResponseGroup>Small</ResponseGroup>
<SearchIndex>HomeGarden</SearchIndex>
<Sort>salesrank</Sort>
</ItemSearchRequest>
<Errors>
<Error>
<Code>AWS.MinimumParameterRequirement</Code>
<Message>Your request should have atleast 1 of the following parameters: 'Keywords','Title','Power','BrowseNode','Artist','Author','Actor','Director','Au dienceRating','Manufacturer','MusicLabel','Composer','Publisher','Brand','Conduc tor','Orchestra','TextStream','Cuisine','City','Neighborhood'.</Message>
</Error>
</Errors>
</Request>
</Items>
</ItemSearchResponse>

Ich habe einige Sachen, wie Signature mittels [Signature] zensiert. Nicht wundern.
Ich verstehe allerdings nicht wieso? Ich finde nirgends in Doku, dass ich nach einen der Parameter suchen muss... Abgesehen davon, suche ich ja nach SearchIndex=HomeGarden&Sort=salesrank.

Wieso funktioniert das nicht, habe ihr da eine Idee?
Ich nutze übrigens diese Library hier: https://github.com/Exeu/apai-io

MfG und Vielen Dank
 
Hi,

Ich verstehe allerdings nicht wieso? Ich finde nirgends in Doku, dass ich nach einen der Parameter suchen muss...

keine Ahnung in welcher Doc du suchst, aber in der verlinkten von dir steht klar drin:

An ItemSearch request requires a search index and the value for at least one parameter.

VG,
Mad
 
Stimmt, Du hast Recht. War ich wohl zu schnell. Aber gut, ich kann ja über BrowseNode 10925241, welche für Garten steht, und dann über Sort. Somit habe ich ja keinen SearchIndex mehr und das müsste gehen. Aber auch hier bekomme ich:

<?xml version="1.0"?>
<ItemSearchResponse xmlns="http://webservices.amazon.com/AWSECommerceService/2013-08-01">
<OperationRequest>
<HTTPHeaders>
<Header Name="UserAgent" Value="ApaiIO [2.2.0]"/>
</HTTPHeaders>
<RequestId>[RequestId]</RequestId>
<Arguments>
<Argument Name="AWSAccessKeyId" Value="[AWS Access Key ID]"/>
<Argument Name="AssociateTag" Value="[Associate ID]"/>
<Argument Name="BrowseNode" Value="10925241"/>
<Argument Name="Operation" Value="ItemSearch"/>
<Argument Name="Service" Value="AWSECommerceService"/>
<Argument Name="Sort" Value="salesrank"/>
<Argument Name="Timestamp" Value="2018-03-06T07:39:21Z"/>
<Argument Name="Version" Value="2013-08-01"/>
<Argument Name="Signature" Value="[Signature]"/>
</Arguments>
<RequestProcessingTime>0.0011754650000000</RequestProcessingTime>
</OperationRequest>
<Items>
<Request>
<IsValid>False</IsValid>
<ItemSearchRequest>
<BrowseNode>10925241</BrowseNode>
<ResponseGroup>Small</ResponseGroup>
<Sort>salesrank</Sort>
</ItemSearchRequest>
<Errors>
<Error>
<Code>AWS.RestrictedParameterValueCombination</Code>
<Message>Your request contained a restricted parameter combination. When SearchIndex equals ${restricted-value}, Sort cannot be present.</Message>
</Error>
</Errors>
</Request>
</Items>
</ItemSearchResponse>
Ergänzung ()

Und wenn ich nur nach BrowseNode suche, bekomme ich Folgendes:

<?xml version="1.0"?>
<ItemSearchResponse xmlns="http://webservices.amazon.com/AWSECommerceService/2013-08-01">
<OperationRequest>
<HTTPHeaders>
<Header Name="UserAgent" Value="ApaiIO [2.2.0]"/>
</HTTPHeaders>
<RequestId>[RequestId]</RequestId>
<Arguments>
<Argument Name="AWSAccessKeyId" Value="[AWS Access Key ID]"/>
<Argument Name="AssociateTag" Value="[Associate ID]"/>
<Argument Name="BrowseNode" Value="10925241"/>
<Argument Name="Operation" Value="ItemSearch"/>
<Argument Name="Service" Value="AWSECommerceService"/>
<Argument Name="Timestamp" Value="2018-03-06T07:48:23Z"/>
<Argument Name="Version" Value="2013-08-01"/>
<Argument Name="Signature" Value="[Signature]"/>
</Arguments>
<RequestProcessingTime>0.0024392980000000</RequestProcessingTime>
</OperationRequest>
<Items>
<Request>
<IsValid>True</IsValid>
<ItemSearchRequest>
<BrowseNode>10925241</BrowseNode>
<ResponseGroup>Small</ResponseGroup>
</ItemSearchRequest>
</Request>
</Items>
</ItemSearchResponse>
 
Hi,

Aber gut, ich kann ja über BrowseNode 10925241, welche für Garten steht, und dann über Sort. Somit habe ich ja keinen SearchIndex mehr und das müsste gehen.

bitte lies doch einfach mal die Fehlermeldungen! Es steht doch klar da:

When SearchIndex equals ${restricted-value}, Sort cannot be present.

Bitte mach dich vorher richtig über die API schlau und stochere nicht mit trial and error blind rum und hoffe auf das richtige Ergebnis. Die API ist recht gut dokumentiert und es steht klar dran, was geht und was nicht bzw. wie es geht.

VG,
Mad
 
Zurück
Oben