مثال عن api ipinfo كنسول
#1
برمجته منذ مدة كبيرة
وجدته بالصدفة واردت مشاركته
PHP كود :
program Project2;

{
$APPTYPE CONSOLE}

uses
  WinInet
,
  Windows //,superobject
;

function 
GetUrlContent(const Urlstring): UTF8String;
var
  NetHandleHINTERNET;
  UrlHandleHINTERNET;
  Buffer: array[0..1023of byte;
  BytesReaddWord;
  StrBufferUTF8String;
begin
  Result 
:= '';
  NetHandle := InternetOpen('USER_AGENT'INTERNET_OPEN_TYPE_PRECONFIGnilnil0);
  if Assigned(NetHandlethen
    
try
      UrlHandle := InternetOpenUrl(NetHandlePChar(Url), nil0INTERNET_FLAG_RELOAD0);
      if Assigned(UrlHandlethen
        
try
          repeat
            InternetReadFile
(UrlHandle, @BufferSizeOf(Buffer), BytesRead);
            SetString(StrBufferPAnsiChar(@Buffer[0]), BytesRead);
            Result := Result StrBuffer;
          until BytesRead 0;
        finally
          InternetCloseHandle(UrlHandle);
        end
      
else
        Result:=('Cannot open URL 'Url);
    finally
      InternetCloseHandle(NetHandle);
    end
  
else
    Result:=('Unable to initialize Wininet');
end;
var 
Content:UTF8String;
begin
Content
:=GetUrlContent('http://api.ipinfodb.com/v3/ip-city/?key=725b4fc2190b0ac507d281ea20b491e2d80e484a40e887cf05e32f796934168a&format=json') ;
Writeln(Content) ;
{
Writeln('------------------------------------------------------');
writeln('Country Name : '+so(Content)['countryName'].AsString) ;
writeln('Region Name : '+so(Content)['regionName'].AsString) ;
writeln('City Name : '+so(Content)['cityName'].AsString) ;
writeln('Zip Code : '+so(Content)['zipCode'].AsString) ;
writeln('Latitude : '+so(Content)['latitude'].AsString) ;
writeln('Longitude : '+so(Content)['longitude'].AsString) ;
writeln('Time Zone : '+so(Content)['timeZone'].AsString) ;
Writeln('------------------------------------------------------');  }
Readln
end



الملفات المرفقة
.rar   Project2.rar (الحجم : 865 بايت / التحميلات : 45)
[-] كل من 4 users say قال شكرا ل onexite على المشاركة المفيدة
  • larbiparadox, delphi17, Rever7eR, haniid
الرد
#2
بارك للخ فيك على المجهودات و لكن الرابط لا يعمل في الملف المرفق و بوركت الجهود خويا
الرد
#3
السلام عليكم

نفس المثال لاكن باستعمال وحدات RESTRequest4D 

المثال يعمل على win + android

--------------
نعرف متغير لتنفيد api التى يوفرها الموقع يمكن التسجيل فى الموقع للحصول على your free api key
PHP كود :
BaseUrlstring
نضيف الوحدات لتنفيد الامر GET و قرائت المخرجات التى يقدمها الموقع
PHP كود :
uses RESTRequest4DSystem.JSONSystem.JSON.Readers

تنفيد الامر GET
كود :
function TForm18.ExecuteGet(sBaseUrl: string): string;
var
  LResponse: IResponse;
begin
  LResponse := TRequest.New.BaseURL(sBaseUrl)
    .Accept('application/json')
    .Get;
  Result := LResponse.Content;
end;

عند الحصول على json نستخرج المعلومات التى نريدها 
كود :
function TForm18.ExtractData(JSonData: string): TStringList;
var
  JSONValue: TJSONValue;
begin
  JSONValue := TJSONObject.ParseJSONValue(JSonData, False, False);
  Result := TStringList.Create;
  try
    if JSONValue is TJSONArray then
     //...
    else if JSONVAlue is TJSONObject then
    begin
      Result.Add(JSONValue.GetValue<string>('statusCode'));
      Result.Add(JSONValue.GetValue<string>('statusMessage'));
      Result.Add(JSONValue.GetValue<string>('ipAddress'));
      Result.Add(JSONValue.GetValue<string>('countryCode'));
      Result.Add(JSONValue.GetValue<string>('countryName'));
      Result.Add(JSONValue.GetValue<string>('regionName'));
      Result.Add(JSONValue.GetValue<string>('cityName'));
      Result.Add(JSONValue.GetValue<string>('zipCode'));
      Result.Add(JSONValue.GetValue<string>('latitude'));
      Result.Add(JSONValue.GetValue<string>('longitude'));
      Result.Add(JSONValue.GetValue<string>('timeZone'));
    end;
  finally
    JSONValue.Free;
  end;
end;

تنفيد العملية 
كود :
  Memo1.Lines := ExtractData(ExecuteGet(BaseUrl));


الملفات المرفقة
.zip   RESTRequest4Delphi-master.zip (الحجم : 916.38 ك ب / التحميلات : 20)
.rar   demo.rar (الحجم : 1.44 ك ب / التحميلات : 14)
[-] كل من 1 user says قال شكرا ل haniid على المشاركة المفيدة
  • takaya5
الرد


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم