Delphi Token Almak ve Json Okumak yada IdHTTP.Get Kullanmak

Delphi Nedir?

Delphi, hızlı uygulama geliştirme (RAD) için kullanılan güçlü bir programlama dili ve IDE’dir. Pascal diline dayalı olan Delphi, görsel tasarım araçları ve geniş kütüphane desteği ile masaüstü, mobil ve web uygulamaları geliştirmek için kullanılır.


API Nedir?

API (Application Programming Interface), uygulamaların birbirleriyle iletişim kurmasını sağlayan bir arayüzdür. Örneğin, bir hava durumu uygulaması, meteoroloji servisinin API’sini kullanarak güncel verileri alabilir.


Token Nedir ve Ne İçin Kullanılır?

Token, genellikle bir API’ye erişim sağlamak için kullanılan güvenlik anahtarıdır. Kimlik doğrulama ve yetkilendirme amacıyla kullanılır. Örneğin, bir kullanıcı giriş yaptığında sunucu, kullanıcıya bir token sağlar ve bu token, işlemler boyunca kimlik doğrulama için kullanılır.


JSON Nedir?

JSON (JavaScript Object Notation), veri alışverişinde kullanılan hafif bir formatıdır. İnsan tarafından okunabilir bir yapıya sahiptir ve genellikle API’lerden gelen veya API’lere gönderilen verileri taşımak için kullanılır. Örneğin:

json
{
"isim": "Ali",
"yas": 25,
"meslek": "Yazılımcı"
}


var
RESTClient: TRESTClient;
RESTRequest: TRESTRequest;
RESTResponse: TRESTResponse;
JSONRequest: TJSONObject;
JSONResponse: TJSONObject;
begin

UserName := cxTextEdit1.Text;
password := cxTextEdit2.Text;
FBaseURL := ‘https://alisahan.com/api’;
RESTClient := TRESTClient.Create(FBaseURL);
RESTRequest := TRESTRequest.Create(nil);
RESTResponse := TRESTResponse.Create(nil);
try
RESTRequest.Client := RESTClient;
RESTRequest.Response := RESTResponse;

// API endpoint for authentication
RESTClient.BaseURL := FBaseURL + ‘/tokenauth/authenticate’;
RESTRequest.Method := TRESTRequestMethod.rmPOST;

// Preparing JSON request body
JSONRequest := TJSONObject.Create;
try
JSONRequest.AddPair(‘userNameOrEmailAddress’, UserName);
JSONRequest.AddPair(‘password’, password);
RESTRequest.AddBody(JSONRequest.ToString, TRESTContentType.ctAPPLICATION_JSON);
finally
JSONRequest.Free;
end;

// Execute request
RESTRequest.execute;

// Process response
if RESTResponse.StatusCode = 200 then
begin
JSONResponse := TJSONObject.ParseJSONValue(RESTResponse.Content) as TJSONObject;
try
if JSONResponse.TryGetValue<string>(‘result.accessToken’, FToken) then
cxMemo1.Text := FToken;
finally
JSONResponse.Free;
end;
end
else
begin
raise Exception.CreateFmt(‘Authentication failed: %s’, [RESTResponse.StatusText]);
end;
finally
RESTRequest.Free;
RESTResponse.Free;
RESTClient.Free;
end;

 

var
IdHTTP: TIdHTTP;
SSLHandler: TIdSSLIOHandlerSocketOpenSSL;
Response: TStringStream;
URL, Token, StartSendDate, EndSendDate: string;
JsonObj: string;
JsonValue: TJSONValue;
JsonArray: TJSONArray;
JsonObject: TJSONObject;
begin
// Değişkenleri tanımla
IdHTTP := TIdHTTP.Create(nil);
SSLHandler := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
Response := TStringStream.Create(”, TEncoding.UTF8); // UTF-8 olarak tanımla

try
try
// SSL Handler ataması
IdHTTP.IOHandler := SSLHandler;
// TLS 1.2’yi etkinleştir
SSLHandler.SSLOptions.Method := sslvTLSv1_2;
SSLHandler.SSLOptions.SSLVersions := [sslvTLSv1_2];
// Authorization header
Token := FToken; // Geçerli token değerini buraya yazın
IdHTTP.Request.CustomHeaders.Values[‘Authorization’] := ‘Bearer ‘ + Token;

StartSendDate := ‘12.10.2024’;
EndSendDate := ‘12.23.2024’;

// URL oluştur
URL := Format(‘https://alisahan.com/api/services/app/Product/GetTurkWebSupply?StartSendDate=%s&EndSendDate=%s’, [StartSendDate, EndSendDate]);

// HTTP GET isteği gönder
IdHTTP.Get(URL, Response);

// Yanıtı göster
// showmessage(‘Başarılı Yanıt: ‘ + Response.DataString);
cxMemo2.Text := Response.DataString;

except
on E: Exception do
showmessage(‘Hata Oluştu: ‘ + E.Message);
end;
finally
Response.Free;
SSLHandler.Free;
IdHTTP.Free;
end;

var
IdHTTP: TIdHTTP;
SSLHandler: TIdSSLIOHandlerSocketOpenSSL;
Response: TStringStream;
JsonResponse: TJSONObject;
Token, URL, StartSendDate, EndSendDate: string;
begin
// Değişkenleri tanımla
IdHTTP := TIdHTTP.Create(nil);
SSLHandler := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
Response := TStringStream.Create(”, TEncoding.UTF8); // UTF-8 olarak tanımla

try
try
// SSL Handler ataması
IdHTTP.IOHandler := SSLHandler;
// TLS 1.2’yi etkinleştir
SSLHandler.SSLOptions.Method := sslvTLSv1_2;
SSLHandler.SSLOptions.SSLVersions := [sslvTLSv1_2];
// Authorization header
Token := FToken; // Geçerli token değerini buraya yazın
IdHTTP.Request.CustomHeaders.Values[‘Authorization’] := ‘Bearer ‘ + Token;

StartSendDate := ‘12.10.2024’;
EndSendDate := ‘12.23.2024’;

// URL oluştur
URL := Format(‘https://alisahan.com/api/services/app/Product/GetTurkWebSupply?StartSendDate=%s&EndSendDate=%s’, [StartSendDate, EndSendDate]);

// HTTP GET isteği gönder
IdHTTP.Get(URL, Response);

// Yanıtı JSON olarak işle
JsonResponse := TJSONObject.ParseJSONValue(Response.DataString) as TJSONObject;
try
if JsonResponse <> nil then
begin
// Gelen JSON verisini işleyin
cxMemo2.Text := JsonResponse.Format; // JSON verisini güzel biçimlendirilmiş olarak göster
end
else
ShowMessage(‘JSON Yanıt parse edilemedi!’);
finally
JsonResponse.Free;
end;

except
on E: Exception do
ShowMessage(‘Hata Oluştu: ‘ + E.Message);
end;
finally
Response.Free;
SSLHandler.Free;
IdHTTP.Free;
end;

hakkında admin

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir