AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi idHTTP - GET mit Header und Kompression
Thema durchsuchen
Ansicht
Themen-Optionen

idHTTP - GET mit Header und Kompression

Ein Thema von LWChris · begonnen am 27. Jul 2010 · letzter Beitrag vom 28. Jul 2010
 
Benutzerbild von LWChris
LWChris

Registriert seit: 27. Jul 2010
Ort: Erkelenz
22 Beiträge
 
Turbo Delphi für Win32
 
#1

idHTTP - GET mit Header und Kompression

  Alt 27. Jul 2010, 05:01
Hallo zusammen,

ich habe bereits die ganze Nacht gegooglet und habe mit jetzt entschieden, DP beizutreten, da ich es ehrlich gesagt für das kompetenteste Forum halte bisher.

Ich hoffe, ihr könnt mir helfen.

Ich möchte gerne die Discogs API verwenden (API-Dokumentation falls jemand das Folgende selbst nachlesen will), um (für's erste einmal) Künstler nachzuschlagen.

Die API verlangt GET Abfragen, im Header "Accept-Encoding: gzip", und die Antwort kommt als gzip komprimiertes XML. Folgende Unit habe ich mir bisher dafür zusammengebastelt - leider ohne Erfolg, ich erhalte als Antwort immer "HTTP/1.1 200 OK"; die Bestätigung nützt mir aber nicht viel, ich möchte ja gerne an die Daten.

Vorab-Info, damit ihr euch nicht allzusehr einlesen müsst:
MakeURL erzeugt z. B. einen Link im Format
Code:
http://www.discogs.com/search?type=artists&q=metallica&f=xml&api_key=<API_Key>
Delphi-Quellcode:
unit U_Discogs;

interface

uses
  Classes, SysUtils, idHTTP, IdHTTPHeaderInfo, IdCompressorZLibEx;

var
  Compressor: TIdCompressorZLibEx;
  DC_HTTP: TidHTTP;

function DC_SearchArtist(Name: String): Boolean;

implementation

function MakeURL(SType, STerm: String): String;
begin
  STerm:=StringReplace(LowerCase(STerm),' ','+',[rfReplaceAll]);
  result:='http://www.discogs.com/search?type='+SType+'q='+STerm+'&f=xml&api_key=<API_Key>';
end;

function DC_SearchArtist(Name: String): Boolean;
var Response: TStringStream;
    ResponseT: String;
begin
  Response:=TStringStream.Create('');
  try
    with DC_HTTP.Request do
      begin
        Method:='GET';
        URL:=MakeURL('artists',Name);
        Host:='www.discogs.com';
        AcceptEncoding:='gzip';
      end;
    DC_HTTP.Get(MakeURL('artists',Name),Response);
    ResponseT:=Response.DataString;
  except
   on E: Exception do
     begin
       ResponseT:='';
     end;
  end;
  Response.Free;
  result:=Pos('<resp stat="ok"',ResponseT)=1;
end;

initialization
  DC_HTTP:=TidHTTP.Create;
  Compressor:=TIdCompressorZLibEx.Create(DC_HTTP);
  DC_HTTP.Compressor:=Compressor;

finalization
  Compressor.Free;
  DC_HTTP.Free;

end.
Kann mir jemand helfen, wie ich an die XML-Daten komme, bzw. sagen, was ich falsch mache? Ich bin noch sehr unerfahren auf dem Gebiet HTTP Get und Post (sowie im Delphi-Umgang mit XML, aber das ist ja sekundär, es würde mir ja schon reichen, wenn ich das XML-Ergebnis zunächst mal als Fließtext sehe).

Liegt der Fehler darin, dass ich TStringStream nehme und nicht etwa eine XML Komponente aus xmldom, XMLIntf, msxmldom bzw. XMLDoc (ich verwende immer alle 4 gleichzeitig, weil ich nie weiß, was wo implementiert ist)?

Ich hoffe, ihr könnt mir helfen.

Übrigens: den API-Key kann ich euch natürlich leider nicht geben. Aber ich bin gerne bereit, eure Vorschläge jedes mal im Programm auszuprobieren.

P.S.: Die Stichworte sind ja lustig, get ist zu allgemein, neue darf ich nicht verwenden, welche es schon gibt kann ich nicht einsehen. Sollte man vielleicht mal mit Vorschlägen versehen, damit man weiß, welche man verwenden darf.
Chris
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:12 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz