(Gast)
n/a Beiträge
|
Re: Wie funktioniert IdWhoIs (Indy)?
10. Aug 2005, 00: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;
|
|
Zitat
|