Einzelnen Beitrag anzeigen

jensw_2000
(Gast)

n/a Beiträge
 

Re: Wie funktioniert IdWhoIs (Indy)?

  Alt 9. Aug 2005, 23:03
Warum nicht einfach über idHTTP ?

Delphi-Quellcode:
function GetWhoisByWeb(Domain:String):String;
// Das Parser Gründgerüst habe ich aus der DP, Autor leider unbekannt
// Diese Funktion nutz HTTP Dienste von [url]www.iks-jena.de[/url]
//
var
  idHTTP:TidHTTP;
  ParamData : TStringStream;
  s:String;
  f:Textfile;
begin
  ParamData := TStringStream.Create('');

  //Result initialisieren
  Result:='';
  
  // idHTTP dynamisch erzeugen
  idHTTP:=TIDHTTP.Create(nil);

  try
    // Parameter search=erstellen und mit Domainnamen versehen
    ParamData .WriteString('search=' + Domain);

    // Post wie von einer HTML-Form simulieren
    IdHTTP.Request.ContentType := 'application/x-www-form-urlencoded';

    // Ansender = Website
    IdHTTP.Request.Referer := 'http://www.iks-jena.de/cgi-bin/whois';

    // Bin mir nicht sicher ob der Rest gebraucht wird... aber so machts der Mozilla Firefox
    // sollte also nicht verkehrt sein :)
    IdHTTP.Request.AcceptCharset := 'ISO-8859-1,utf-8;q=0.7,*;q=0.7';
    IdHTTP.Request.AcceptEncoding := 'gzip,deflate';
    IdHTTP.Request.AcceptLanguage := 'de-de,de;q=0.8,en-us;q=0.5,en;q=0.3';

    try
      // idHTTP (Indy7) aufrufen und Suche posten
      s:=IdHTTP.Post('http://www.iks-jena.de/cgi-bin/whois', ParamData);
    except
      on e:Exxeption do
        s:='Schwehrer Fehler beim Absenden des Befehls:'+#13#10+e.message;
    end;
    
    // gewünschten Part aus der "Result-Website" ausschneiden
    if pos('
<PRE>
',s)<>0 then
    begin
       S:=Copy(s,Pos('
<PRE>
',s)+9,length(s));
       s:=Copy(s,1,pos('</PRE>',s)-1);
    end
    else begin
      // oder Fehler ausgeben
      s:='Prüfung nicht möglich!'+#13#10+
         'Entweder sind Ihre Eingaben unvollständig oder'+#13#10+
         'es besteht keine Verbindung zu http://www.iks-jena.de'         ;
    end;

  finally
    // idHTTP freigeben
    FreeAndNIL(idHTTP);
  end;

  Result:=s;

end;

Aufruf:

Delphi-Quellcode:
TForm1.Button1Click(sender:tobject);
begin
  Memo1.lines.text:=GetWhoisByWeb('web.de');
end;
  Mit Zitat antworten Zitat