AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Whois from IP-Adresse?

Ein Thema von PeterPanino · begonnen am 9. Aug 2018 · letzter Beitrag vom 10. Aug 2018
Antwort Antwort
Seite 2 von 2     12
PeterPanino

Registriert seit: 4. Sep 2004
1.138 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#11

AW: Whois from IP-Adresse?

  Alt 10. Aug 2018, 07:36
Fehler gefunden: Buffer muss AnsiChar sein!
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
1.676 Beiträge
 
Delphi 2009 Professional
 
#12

AW: Whois from IP-Adresse?

  Alt 10. Aug 2018, 07:39
So sollte es funktionieren, Uses anpassen (ich nutze D2009 ^_^)
Delphi-Quellcode:
uses WinInet;

function GetUrlContent(const Url: string): UTF8String;
var
  NetHandle: HINTERNET;
  UrlHandle: HINTERNET;
  Buffer: array[0..1023] of byte;
  BytesRead: dWord;
  StrBuffer: UTF8String;
begin
  Result := '';
  NetHandle := InternetOpen('Delphi 2009', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
  if Assigned(NetHandle) then
    try
      UrlHandle := InternetOpenUrl(NetHandle, PChar(Url), nil, 0, INTERNET_FLAG_RELOAD, 0);
      if Assigned(UrlHandle) then
        try
          repeat
            InternetReadFile(UrlHandle, @Buffer, SizeOf(Buffer), BytesRead);
            SetString(StrBuffer, PAnsiChar(@Buffer[0]), BytesRead);
            Result := Result + StrBuffer;
          until BytesRead = 0;
        finally
          InternetCloseHandle(UrlHandle);
        end
      else
        raise Exception.CreateFmt('Cannot open URL %s', [Url]);
    finally
      InternetCloseHandle(NetHandle);
    end
  else
    raise Exception.Create('Unable to initialize Wininet');
end;
Gruß vom KodeZwerg
Wenn ein unerwarteter Fehler aufgetreten ist, frage ich mich immer, welche Fehler erwartet wurden...
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
1.676 Beiträge
 
Delphi 2009 Professional
 
#13

AW: Whois from IP-Adresse?

  Alt 10. Aug 2018, 07:42
Fehler gefunden: Buffer muss AnsiChar sein!
Mein Vorschlag beinhaltet beides, Ascii GET Content sowie UTF8. Also UTF8 wäre kompatibel zu beiden will ich damit sagen. Ist mehr 'ne universelle Lösung.
Gruß vom KodeZwerg
Wenn ein unerwarteter Fehler aufgetreten ist, frage ich mich immer, welche Fehler erwartet wurden...
  Mit Zitat antworten Zitat
PeterPanino

Registriert seit: 4. Sep 2004
1.138 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#14

AW: Whois from IP-Adresse?

  Alt 10. Aug 2018, 07:59
Winapi.WinInet = WinInet?
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
1.676 Beiträge
 
Delphi 2009 Professional
 
#15

AW: Whois from IP-Adresse?

  Alt 10. Aug 2018, 08:01
Wahrscheinlich Ja.

Also bei Dir mit dem Winapi Namespace bei mir ohne.
Gruß vom KodeZwerg
Wenn ein unerwarteter Fehler aufgetreten ist, frage ich mich immer, welche Fehler erwartet wurden...

Geändert von KodeZwerg (10. Aug 2018 um 08:18 Uhr)
  Mit Zitat antworten Zitat
PeterPanino

Registriert seit: 4. Sep 2004
1.138 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#16

AW: Whois from IP-Adresse?

  Alt 10. Aug 2018, 08:15
Funktioniert ausgezeichnet. Danke!
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
1.676 Beiträge
 
Delphi 2009 Professional
 
#17

AW: Whois from IP-Adresse?

  Alt 10. Aug 2018, 08:21
Gern geschehen, in der Repeat Schleife könntest Du das ganze auch in eine StringList ausgeben lassen um auf #1-#14 einzeln zugreifen zu können, aber mach wie Du magst, jetzt weißt Du ja wie es funktioniert
Gruß vom KodeZwerg
Wenn ein unerwarteter Fehler aufgetreten ist, frage ich mich immer, welche Fehler erwartet wurden...
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
1.676 Beiträge
 
Delphi 2009 Professional
 
#18

AW: Whois from IP-Adresse?

  Alt 10. Aug 2018, 11:24
So habe ich es nun bei mir, um noch mehr Informationen zu erhalten.
Delphi-Quellcode:
type
  ApiResults = record
    Status: UTF8String;
    Country: UTF8String;
    CountryCode: UTF8String;
    RegionState: UTF8String;
    RegionName: UTF8String;
    City: UTF8String;
    Zip: UTF8String;
    Latitude: UTF8String;
    Longitude: UTF8String;
    CityTimeZone: UTF8String;
    ISP: UTF8String;
    Organization: UTF8String;
    NumberName: UTF8String;
    DNS: UTF8String;
    MobileConnection: UTF8String;
    ProxyConnection: UTF8String;
    QueryIP: UTF8String;
    ErrorMessage: UTF8String;
  end;

function GetUrlContentData(const Url: string): UTF8String;
var
  NetHandle: HINTERNET;
  UrlHandle: HINTERNET;
  Buffer: array[0..1023] of byte;
  BytesRead: dWord;
  StrBuffer: UTF8String;
begin
  Result := '';
  NetHandle := InternetOpen('Delphi 2009', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
  if Assigned(NetHandle) then
    try
      UrlHandle := InternetOpenUrl(NetHandle, PChar(Url), nil, 0, INTERNET_FLAG_RELOAD, 0);
      if Assigned(UrlHandle) then
        try
          repeat
            InternetReadFile(UrlHandle, @Buffer, SizeOf(Buffer), BytesRead);
            SetString(StrBuffer, PAnsiChar(@Buffer[0]), BytesRead);
            Result := Result + StrBuffer;
          until BytesRead = 0;
        finally
          InternetCloseHandle(UrlHandle);
        end
      else
        raise Exception.CreateFmt('Cannot open URL %s', [Url]);
    finally
      InternetCloseHandle(NetHandle);
    end
  else
    raise Exception.Create('Unable to initialize Wininet');
end;

function GetUrlContent(const Url: string): ApiResults;
begin
  Result.Status := GetUrlContentData(Url+'?fields=status');
  if Pos('fail', LowerCase(Result.Status)) > 0 then
  begin
    Result.ErrorMessage := GetUrlContentData(Url+'?fields=message');
    Result.QueryIP := GetUrlContentData(Url+'?fields=query');
  end
  else
  begin
    Result.Country := GetUrlContentData(Url+'?fields=country');
    Result.CountryCode := GetUrlContentData(Url+'?fields=countryCode');
    Result.RegionState := GetUrlContentData(Url+'?fields=region');
    Result.RegionName := GetUrlContentData(Url+'?fields=regionName');
    Result.City := GetUrlContentData(Url+'?fields=city');
    Result.Zip := GetUrlContentData(Url+'?fields=zip');
    Result.Latitude := GetUrlContentData(Url+'?fields=lat');
    Result.Longitude := GetUrlContentData(Url+'?fields=lon');
    Result.CityTimeZone := GetUrlContentData(Url+'?fields=timezone');
    Result.ISP := GetUrlContentData(Url+'?fields=isp');
    Result.Organization := GetUrlContentData(Url+'?fields=org');
    Result.NumberName := GetUrlContentData(Url+'?fields=as');
    Result.DNS := GetUrlContentData(Url+'?fields=reverse');
    Result.MobileConnection := GetUrlContentData(Url+'?fields=mobile');
    Result.ProxyConnection := GetUrlContentData(Url+'?fields=proxy');
    Result.QueryIP := GetUrlContentData(Url+'?fields=query');
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  ThisLines: ApiResults;
begin
  ThisLines := GetUrlContent('http://ip-api.com/line/' + 'ip-api.com');
  Memo1.Lines.Add('Status: '+ThisLines.Status);
  if Pos('fail', LowerCase(ThisLines.Status)) > 0 then
   begin
     Memo1.Lines.Add('ErrorMessage: '+ThisLines.ErrorMessage);
     Memo1.Lines.Add('QueryIP: '+ThisLines.QueryIP);
   end
   else
   begin
     Memo1.Lines.Add('Country: '+ThisLines.Country);
     Memo1.Lines.Add('CountryCode: '+ThisLines.CountryCode);
     Memo1.Lines.Add('RegionState: '+ThisLines.RegionState);
     Memo1.Lines.Add('RegionName: '+ThisLines.RegionName);
     Memo1.Lines.Add('City: '+ThisLines.City);
     Memo1.Lines.Add('Zip: '+ThisLines.Zip);
     Memo1.Lines.Add('Latitude: '+ThisLines.Latitude);
     Memo1.Lines.Add('Longitude: '+ThisLines.Longitude);
     Memo1.Lines.Add('CityTimeZone: '+ThisLines.CityTimeZone);
     Memo1.Lines.Add('ISP: '+ThisLines.ISP);
     Memo1.Lines.Add('Organization: '+ThisLines.Organization);
     Memo1.Lines.Add('NumberName: '+ThisLines.NumberName);
     Memo1.Lines.Add('DNS: '+ThisLines.DNS);
     Memo1.Lines.Add('MobileConnection: '+ThisLines.MobileConnection);
     Memo1.Lines.Add('ProxyConnection: '+ThisLines.ProxyConnection);
     Memo1.Lines.Add('QueryIP: '+ThisLines.QueryIP);
   end;
end;
Gruß vom KodeZwerg
Wenn ein unerwarteter Fehler aufgetreten ist, frage ich mich immer, welche Fehler erwartet wurden...

Geändert von KodeZwerg (10. Aug 2018 um 11:29 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
1.676 Beiträge
 
Delphi 2009 Professional
 
#19

AW: Whois from IP-Adresse?

  Alt 10. Aug 2018, 22:05
Wenn Du die Funktion GetUrlContent() hiermit ersetzt ist/zählt es als nur 1 Internet-Abruf.
Delphi-Quellcode:
function GetUrlContent(const Url: string): ApiResults;
var
  tmp: UTF8String;
  sl: TStrings;
begin
  tmp := GetUrlContentData(Url+'?fields=status,country,countryCode,region,regionName,city,zip,lat,lon,timezone,isp,org,as,reverse,mobile,proxy,query,message');
  try
    sl := TStringList.Create;
    sl.Text := tmp;
    Result.Status := sl[0];
    if Pos('fail', LowerCase(Result.Status)) > 0 then
      begin
        Result.ErrorMessage := sl[1];
        Result.QueryIP := sl[2];
      end
      else
      begin
        Result.Country := sl[1];
        Result.CountryCode := sl[2];
        Result.RegionState := sl[3];
        Result.RegionName := sl[4];
        Result.City := sl[5];
        Result.Zip := sl[6];
        Result.Latitude := sl[7];
        Result.Longitude := sl[8];
        Result.CityTimeZone := sl[9];
        Result.ISP := sl[10];
        Result.Organization := sl[11];
        Result.NumberName := sl[12];
        Result.DNS := sl[13];
        Result.MobileConnection := sl[14];
        Result.ProxyConnection := sl[15];
        Result.QueryIP := sl[16];
      end;
  finally
    sl.Free;
    tmp := '';
  end;
end;
Viel Spaß damit.
Gruß vom KodeZwerg
Wenn ein unerwarteter Fehler aufgetreten ist, frage ich mich immer, welche Fehler erwartet wurden...

Geändert von KodeZwerg (10. Aug 2018 um 22:08 Uhr)
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 19:01 Uhr.
Powered by vBulletin® Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2018 by Daniel R. Wolf