 |
| |
|
|
 |
Autor |
Nachricht |
 |
| |
|
|
| |
| CCRDude |
#2| Verfasst am: 03.07.2007, 14:43 Titel: Re: Amazon API - WSDL - Developer Program |
 |
 |
 |
|
ehem. Benutzer

|
Habs ja schon im anderen Topic geschrieben, aber wenn's so wichtig ist, schreib ich mal eben ne LGPL-Unit dafür, die meinen eh schon vorhandenen Code schöner macht |
|
 |
|
|
|
| |
| dominikkv |
#3| Verfasst am: 03.07.2007, 15:06 Titel: Re: Amazon API - WSDL - Developer Program |
 |
 |
 |
|
aktives Mitglied Alter: 21 Status: offline Beiträge: 1.006 angemeldet: 30.09.2006 Wohnort: Gundelfingen Delphi 2007 Professional

|
Delphi-Quellcode: | zusammenfalten | markieren | 1 · · · 5 · · · · 10 · 12
| keyword := 'Mein Suchbegriff';
ID := 'Meine ID ABC';
Image := 'MediumImage'; // Imagegröße
T := 'http://webservices.amazon.de/onca/xml?Service=AWSECommerceService&AWSAccessKeyId='+ID+
'&AssociateTag=&Operation=ItemSearch&SearchIndex=Music&Keywords=' +
keywords+'&ResponseGroup=Medium';
T := StringReplace(T,' ','%20',[rfReplaceAll]);
HTTP := TIdHttp.Create();
T := HTTP.Get(t);
HTTP.Free;
t := copy(t, Pos('<'+Image+'>', t), Pos('</'+Image+'>', t)-Pos('<'+Image+'>', t));
t := copy(t, Pos('<URL>', t)+5, Pos('</URL>', t)-Pos('<URL>', t)-5); |
|
und in t steht dann die url zum image |
|
 |
|
|
|
| |
| CCRDude |
#4| Verfasst am: 03.07.2007, 15:37 Titel: Re: Amazon API - WSDL - Developer Program |
 |
 |
 |
|
ehem. Benutzer

|
Na gut, ich hab's dann in 2225 statt 12 Zeilen gemacht, dafür wenigstens mit Fehlerbehandlung, ordentlichen Auslesen des XML, Möglichkeit alle Ergebnisse zu unterscheiden, etc.
snlProtoAmazonOnca.pas
Benutzung:
Delphi-Quellcode: | zusammenfalten | markieren | 1 · · · 5 · · · · 10 · 12
| procedure snlProtoAmazonOncaTestExecute;
var al: TAmazonList;
begin
al := TAmazonList.Create;
al.DeveloperToken := 'XXXXXXXXX';
al.AssociateID := 'YYYYYYYY';
if not QueryArtist('New%20Model%20Army')
then ShowMessage('Could not query artist!');
if al.Count>0
then ShowMessage(al[0].ImageUrlLarge);
al.Free;
end; |
|
edit: Die Unit noch minimal ergänzt um: 1. Indy als Download-Alternative und 2. DownloadAndSaveLargeImageFile in den Items, da Du die ja auch runterladen und speichern wolltest? |
Zuletzt bearbeitet am 03.07.2007, 16:12, insgesamt 2-mal bearbeitet. |
 |
|
|
|
| |
| arne99 |
#5| Verfasst am: 03.07.2007, 15:50 Titel: Re: Amazon API - WSDL - Developer Program |
 |
 |
 |
|
Mitglied Alter: 23 Status: offline Beiträge: 158 angemeldet: 11.01.2005 Wohnort: Hamburg Turbo Delphi für Win32

|
Vielen Vielen Dank, wird getestet.
Zur Info an alle "Neulinge":
Developer Token: If you signed up to use Amazon Web Services prior to August 2004, you have a Developer Token. As Developer Tokens are no longer supported and will not work with newer services, we encourage anyone who has a Developer Token to create a new account. |
 // u know? ID Service www.topsta.de |
 |
|
|
|
| |
| arne99 |
#6| Verfasst am: 03.07.2007, 16:52 Titel: Re: Amazon API - WSDL - Developer Program |
 |
 |
 |
|
Mitglied Alter: 23 Status: offline Beiträge: 158 angemeldet: 11.01.2005 Wohnort: Hamburg Turbo Delphi für Win32

|
WO deklariere ich: [DCC Error] snlProtoAmazonOnca.pas(1225): E2003 Undeclared identifier: 'XMLify' ?
Danke im Vorraus.
| Zitat: | | edit: Die Unit noch minimal ergänzt um: 1. Indy als Download-Alternative und 2. DownloadAndSaveLargeImageFile in den Items, da Du die ja auch runterladen und speichern wolltest? |
Vielen Dank. Letztes wird mir helfen. Wenn ich oberen Fehler behoben bekomme. |
 // u know? ID Service www.topsta.de
Zuletzt bearbeitet von arne99 am 03.07.2007, 16:53, insgesamt 1-mal bearbeitet. |
 |
|
|
|
| |
| CCRDude |
#7| Verfasst am: 03.07.2007, 17:14 Titel: Re: Amazon API - WSDL - Developer Program |
 |
 |
 |
|
ehem. Benutzer

|
Ah, Tschuldigung, das war gerade in die snlCollection.pas gewandert
| Delphi-Quellcode: | markieren | function XMLify(AText: string): string;
begin
AText := StringReplace(AText,'&','&',[rfReplaceAll]);
Result := AText;
end; |
| |
|
 |
|
|
|
| |
| arne99 |
#8| Verfasst am: 03.07.2007, 17:28 Titel: Re: Amazon API - WSDL - Developer Program |
 |
 |
 |
|
Mitglied Alter: 23 Status: offline Beiträge: 158 angemeldet: 11.01.2005 Wohnort: Hamburg Turbo Delphi für Win32

|
Muss nochmal stören:
Ich bin gerade am Debuggen und versuche rauszubekommen wieso ich keine Ausgabe erhalte.
Ich erhalte keine der Messageboxes.
Liegt das daran dass ich keinen DevToken besitze? (Weil an sich nicht notwendig, laut Amazon Api References) |
 // u know? ID Service www.topsta.de
Zuletzt bearbeitet von arne99 am 03.07.2007, 17:29, insgesamt 1-mal bearbeitet. |
 |
|
|
|
| |
| CCRDude |
#9| Verfasst am: 03.07.2007, 17:33 Titel: Re: Amazon API - WSDL - Developer Program |
 |
 |
 |
|
ehem. Benutzer

|
Keinerlei Ausgabe? Lass mal überlegen... das würde heißen, das einerseits das QueryArtist funktioniert hat, andererseits die Rückgabeliste aber leer ist.
Du kannst beim debuggen ja mal einen Breakpoint auf die dritte Codezeile von QueryGeneral setzen (nachdem sUrl gesetzt wurde), sUrl in eine Watch hauen und von dort in die Zwischenablage kopieren und im Browser testen.
Wahrscheinlich müsste ich in der Unit noch ergänzen, daß der Rückgabewert, der innerhalb der XML-Datei angegeben wird, für Result ausgewertet wird...
PS: Download erweitert, Rückgabewert jetzt aktualisiert, pack in das erste ShowMessage noch ein al.LastErrorMessage, das zeigt Dir den genauen Fehler an.
edit #2: in diesem Demo ist zufälligerweise ein dev-token angegeben, das sogar gültig ist
Auf längere Frist sollte ich aber vielleicht einen Query der neuen URL, die nicht per dev-token funktioniert, ergänzen. |
Zuletzt bearbeitet am 03.07.2007, 17:42, insgesamt 2-mal bearbeitet. |
 |
|
|
|
| |
| arne99 |
#10| Verfasst am: 03.07.2007, 17:46 Titel: Re: Amazon API - WSDL - Developer Program |
 |
 |
 |
|
Mitglied Alter: 23 Status: offline Beiträge: 158 angemeldet: 11.01.2005 Wohnort: Hamburg Turbo Delphi für Win32

|
Juhuuu ich habs - und eigentlich nicht. Aber bin der Lösung nahe!
Die URL scheint Okay zu sein, wird aber nicht ausgegeben von Amazon, da:
| Zitat: | We encountered an error while processing your request. Please make sure that you are using a valid developer token and that you have registered for this service. For more information, please visit http://www.amazon.com/webservices |
Also von vorn:
Mein DevToken und AssID sind gesetzt, wohl aber in der falschen Reihenfolge oder gar ganz falsch?
In Amazon wird mir eine andere Bezeichnung gegeben:
Your Access Key ID:
-
Your Secret Access Key:
-
LÖSUNG: Man sollte es tauschen
Ergebnis: Exception: Die XML konnte nicht ausgelesen werden, hier Info:
Zeile 1180 von snlProtoAmazonOnca.pas stoppt er! (Access violation error) |
 // u know? ID Service www.topsta.de
Zuletzt bearbeitet von arne99 am 03.07.2007, 17:49, insgesamt 1-mal bearbeitet. |
 |
|
|
|
| |
| CCRDude |
#11| Verfasst am: 03.07.2007, 17:52 Titel: Re: Amazon API - WSDL - Developer Program |
 |
 |
 |
|
ehem. Benutzer

|
Hab Dir ne PM mit nem kompletten Beispiel geschickt
Die andere Amazon-Methode über Access-ID versuch ich auch mal, hab mir die gerade von Amazon zuschicken lassen, kann noch etwas dauern bis die Mail da ist
edit: so, Download nochmal angepasst; QueryType := aqtAWS tut nun per AWS mit gesetztem AccessKeyID statt per alter XML-Methode per gesetztem DeveloperToken abfragen. Hab's mit ner ISBN und nem Artist getestet.
Wird ja doch etwas Arbeit, gut daß ich das selber auch in TagsRevisited gebrauchen kann dann
(das alte AssociateID war nicht gleich der AccessKeyID, sondern nur die ID, über die man Kunden lenkt, damit man Provision bekommt; die alte Methode funktioniert halt per DeveloperToken, die neue per AccessKeyID, beide können die AssociateID verwenden) |
Zuletzt bearbeitet am 03.07.2007, 18:49, insgesamt 2-mal bearbeitet. |
 |
|
|
|
| |
| Blackheart |
#12| Verfasst am: 03.07.2007, 19:40 Titel: Re: Amazon API - WSDL - Developer Program |
 |
 |
 |
|
Mitglied Status: offline Beiträge: 848 angemeldet: 04.05.2005 Delphi 7 Enterprise

|
@ CCRDude Hättst Du das Beispiel hier reingestellt hätten vieleicht auch andere etwas von dem Thread. |
 Blackheart |
 |
|
|
|
| |
| CCRDude |
#13| Verfasst am: 03.07.2007, 20:00 Titel: Re: Amazon API - WSDL - Developer Program |
 |
 |
 |
|
ehem. Benutzer

|
Schau mal ganz unauffällig in Beitrag #4
Dort ist ja schon ein allgemeines Beispiel... aber wenn Du es ganz ausführlich willst:
Delphi-Quellcode: | zusammenfalten | markieren | 1 · · · 5 · · · · 10 · · · · 15 · · · · 20 · · · · 25 · · · · 30 · · · · 35 · · · · 40 · · · · 45 · · · 49
| program TestAmazon;
{$APPTYPE CONSOLE}
uses
SysUtils,
Windows,
Classes,
Dialogs,
snlProtoAmazonOnca;
procedure ShortInfoDump(Item: TAmazonItem);
begin
WriteLn('ASIN: ' + Item.ASIN);
WriteLn('Artists: ' + Item.Artists.CommaText);
WriteLn('Product: ' + Item.ProductName);
WriteLn('Manufacturer: ' + Item.Manufacturer);
WriteLn('Release Date: ' + FormatDateTime('dddddd', Item.ReleaseDate));
end;
procedure snlProtoAmazonOncaTestExecute;
var al: TAmazonList;
begin
al := TAmazonList.Create;
al.AssociateID := ''; { TODO : Fill in your associate ID }
al.DeveloperToken := ''; { TODO : Fill in your dev-token }
al.AccessKeyID := ''; { TODO : Fill in your access key ID }
al.QueryType := aqtDevToken;
WriteLn('-=[ DevToken lookup for "New Model Army" ]=-');
if al.QueryArtist('New%20Model%20Army') then begin
if al.Count>0
then ShortInfoDump(al[0]);
end else WriteLn('Could not query artist (devtoken): ' + al.LastErrorMessage);
WriteLn;
WriteLn('-=[ AWS lookup for ASIN B000E1162Q ]=-');
al.Clear;
al.QueryType := aqtAWS;
if al.QueryAsin('B000E1162Q') then begin
if al.Count>0
then ShortInfoDump(al[0]);
end else ShowMessage('Could not query ASIN (aws): ' + al.LastErrorMessage);
al.Free;
end;
begin
snlProtoAmazonOncaTestExecute;
end. |
|
Das führt beide Methoden vor; wer kein altes DevToken hat (arne99 meinte ja, die häts nur bis '04 gegeben), sollte natürlich nur al.QueryType = aqtAWS verwenden; die Query*-Routinen können alle beide Methoden.
Die beiden Bugs bzgl. ReleaseDate und Titel per AWS hab ich inzwischen gefixt, nur noch nicht hochgeladen, da die Turbo Delphi-IDE gerade mal wieder in eine Endlos-Error-Runde gegangen ist |
|
 |
|
|
|
| |
| arne99 |
#14| Verfasst am: 04.07.2007, 08:25 Titel: Re: Amazon API - WSDL - Developer Program |
 |
 |
 |
|
Mitglied Alter: 23 Status: offline Beiträge: 158 angemeldet: 11.01.2005 Wohnort: Hamburg Turbo Delphi für Win32

|
Erst einmal: Großes Lob und vielen Dank.
Zur Information an alle: der DevToken ist immer noch notwendig. Jedoch ist der jeweils '04 und '05 ausgelaufen. In AWS Profil einfach nachschauen ob man die notwendigen ID's erhalten hat, wenn nicht dann wohl oder übel neuen holen (per Request auf Seite) oder alle die sich vor '04 angemeldet haben: Neu Anmelden (5min Aktion).
Bin auch mit benannten Beispiel immer bei der Access Violation Error: Screenshot
Das tritt sowohl bei der VCL Applikation als auch bei der Konsolen-Anwendung auf. In dem Moment, als er die DevTokenNodes lesen will.
'Details' bekommt er, ok! - dann LoadFromDevTokenXmlNode(Node) - Funktion gefunden, und mal reingeschaut: Siehe Screenshot. Er kann das DateFormat nicht umsetzen. (glaube ich) oder er bekommt einen falschen Wert !? |
| [ An diesen Beitrag wurden eine oder mehrere Dateien angehängt. Zum Herunterladen bitte anmelden. ] |
 // u know? ID Service www.topsta.de
Zuletzt bearbeitet von arne99 am 04.07.2007, 09:18, insgesamt 3-mal bearbeitet. |
 |
|
|
|
| |
| CCRDude |
#15| Verfasst am: 05.07.2007, 09:02 Titel: Re: Amazon API - WSDL - Developer Program |
 |
 |
 |
|
ehem. Benutzer

|
Hmmm...
Sorry, war gestern unterwegs, hab jetzt erstmal die neuere Datei mit den beiden Fuxes dadrüber hochgeladen.
Ich hab gerade im Demo darüber mal nur AssociateID und AccessKeyID gefüllt; wie zu erwarten schlug die erste Nachfrage fehl, die zweite funktionierte aber einwandfrei. Seh also nicht, wo da wirklich das DevToken noch zwingend nötig wäre...
Änder ich zudem das erste al.QueryType := aqtDevToken schon auf aqtAWS, wird auch dort die erste CD angezeigt.
Die Exception in LoadFromDevTokenXmlNode ist noch zu erwarten, irgendwie überlege ich noch, wie man StrToDate das Format, aus dem er konvertieren soll, noch richtiger beibringt! Aber das sollte ja abgefangen sein, sprich diese Exception sollte nur innerhalb der IDE angezeigt werden.
Anderes typisches Exception-Potential in den XML-Ladern ist halt überall, wo Nodes evtl. nicht existieren, hab nur bei den Standard-Nodes nichts drumgepackt, denn wenn die fehlen, wollte ich sogar nen Fehler. Kann man ja aber auch einfach umstellen, daß es die Fehler nicht per Exception abfängt... ist jetzt auch hochgeladen. |
|
 |
|
|
|
 |
|
 |
| |
|
|
| |
 
|
|
| |
|
Du darfst keine Beiträge in dieses Forum schreiben. Du darfst auf Beiträge in diesem Forum nicht antworten. Du darfst Deine Beiträge in diesem Forum nicht bearbeiten. Du darfst Deine Beiträge in diesem Forum nicht löschen. Du darfst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum nicht posten. Du kannst Dateien in diesem Forum nicht herunterladen.
|
|
 |