HTTP/1

TsgcHTTP1Client, TIdHTTP indy bileşeninden miras alan ve bazı yeni özellikler ekleyen görsel olmayan bir bileşendir.

Bu bileşen sgcHTTP biriminde bulunur.

TLSOptions

HTTP/1 protokolünü kullanarak güvenli SSL/TLS sunucularına nasıl bağlanılacağını yapılandırmanıza olanak tanır.

 

ALPNProtocols: sunucuya gönderilecek ALPN protokollerinin listesi.

RootCertFile: kök sertifika dosyasının yolu.

CertFile: sertifika dosyasının yolu.

KeyFile: sertifika anahtar dosyasının yolu.

Password: sertifika bir parola ile güvenli hâle getirilmişse, buraya ayarlayın.

VerifyCertificate: sertifika doğrulanmalıysa, bu özelliği etkinleştirin. SSL doğrulamasını özelleştirmek için OnSSLVerifyPeer olayını kullanın.

VerifyDepth: X.509 sertifikası için doğrulama yapıldığında izin verilen maksimum bağlantı sayısını temsil eden bir Integer özelliğidir.

Version: varsayılan olarak TLS 1.0 kullanır. Sunucu daha yüksek bir TLS sürümü gerektiriyorsa, burada seçilebilir.

Proxy: burada bir Proxy Sunucusu üzerinden bağlanmak isteyip istemediğinizi tanımlayabilirsiniz, aşağıdaki proxy sunucularına bağlanabilirsiniz:

pxyHTTP: HTTP Proxy Sunucusu.

pxySocks4: SOCKS4 Proxy Server.

pxySocks4A: SOCKS4A Proxy Sunucusu.

pxySocks5: SOCKS5 Proxy Sunucusu.

IOHandler: TLS kullanarak bağlanmak için kullanacağınız kütüphaneyi seçin.

iohOpenSSL: OpenSSL kütüphanesini kullanır ve Indy bileşenleri için varsayılandır. win32/win64 için OpenSSL kütüphanelerinin dağıtılmasını gerektirir.

iohSChannel: Microsoft tarafından Windows için uygulanan bir güvenlik protokolü olan Secure Channel'ı kullanır. OpenSSL kütüphanelerinin dağıtılmasını gerektirmez. Yalnızca Windows 32/64 bit'te çalışır.

OpenSSL_Options: openSSL kütüphanelerinin yapılandırması.

APIVersion: hangi OpenSSL API'sinin kullanılacağını tanımlamaya olanak tanır.

oslAPI_1_0: API 1.0 OpenSSL kullanır, Indy tarafından desteklenen en son sürümdür

oslAPI_1_1: API 1.1 OpenSSL kullanır, özel Indy kütüphanemizi gerektirir ve OpenSSL 1.1.1 kütüphanelerinin (TLS 1.3 desteğiyle) kullanılmasına izin verir.

oslAPI_3_0: API 3.0 OpenSSL kullanır, özel Indy kütüphanemizi gerektirir ve OpenSSL 3.0.0 kütüphanelerinin (TLS 1.3 desteğiyle) kullanılmasına olanak tanır.

LibPath: burada OpenSSL kütüphanelerinin nerede bulunduğunu yapılandırabilirsiniz

oslpNone: bu varsayılandır. OpenSSL kütüphaneleri, ikili dosyayla aynı klasörde veya bilinen bir yolda olmalıdır.

oslpDefaultFolder: tüm IDE kişilikleri için kütüphanelerin bulunması gereken OpenSSL yolunu otomatik olarak ayarlar.

oslpCustomFolder: seçilen seçenek buysa, tam yolu LibPathCustom özelliğinde tanımlayın.

LibPathCustom: LibPath = oslpCustomFolder olduğunda burada OpenSSL kütüphanelerinin bulunduğu tam yolu tanımlayın.

UnixSymLinks: Unix sistemlerinde SymLinks yüklemesini etkinleştirin veya devre dışı bırakın (varsayılan olarak etkindir, OSX64 hariç):

oslsSymLinksDefault: varsayılan olarak, OSX64 dışında symlink'ler etkindir (macOS Monterey ve sonrası, kütüphaneyi sürüm olmadan yüklemeye çalışırken başarısız olur).

oslsSymLinksLoadFirst: sürümlü kütüphaneleri yüklemeyi denemeden önce, önce symlink'leri yükleyin.

oslsSymLinksLoad: sürümlü kütüphaneleri yüklemeyi denedikten sonra symlink'leri yükle.

oslsSymLinksDontLoad: SymLink'leri yükleme.

MinVersion: burada, istemcinin güvenli bir sunucuya bağlanmak için kullanacağı minimum sürümü ayarlayın. Varsayılan olarak değer tlsUndefined'dır; bu, minimum sürümün Version özelliğinde ayarlanmış olanla aynı olduğu anlamına gelir. Örnek: İstemcinin yalnızca TLS 1.2 veya TLS 1.3 kullanarak bağlanmasını istiyorsanız aşağıdaki değerleri ayarlayın.

 

SSLOptions.Version := tls1_3;

SSLOptions.OpenSSL_Options.MinVersion := tls1_2;

X509Checks: ek X509 sertifika doğrulamalarını etkinleştirmek için bu özelliği kullanın:

Mode: hangi seçeneklerin doğrulanacağını seçin

oslx509chHostName: hostname sertifikasını doğrular.

oslx509chIPAddress: sertifikanın ip adresini doğrular.

HostName: istekten farklıysa ana bilgisayar adını ayarlayın.

IPAddress: istekten farklıysa ip adresini ayarlayın.

 

SChannel_Options: Windows Sertifika Deposundan bir sertifika kullanmanıza olanak tanır.

CertHash: sertifika Hash değeridir. Sertifika Hash değerini powershell'de bir dir komutu çalıştırarak bulabilirsiniz.

CipherList: burada hangi Cipher'ların kullanılacağını ayarlayabilirsiniz (":" ile ayrılmış). Örnek: CALG_AES_256:CALG_AES_128

CertStoreName: sertifikanın saklandığı depo adı. Aşağıdakilerden birini seçin:

scsnMY (varsayılan)

scsnCA

scsnRoot

scsnTrust

CertStorePath: sertifikanın saklandığı depo yolu. Aşağıdakilerden birini seçin:

scspStoreCurrentUser (varsayılan)

scspStoreLocalMachine

 

Günlük

Log özelliği etkinleştirilirse, soket mesajlarını belirtilen bir günlük dosyasına kaydeder, hata ayıklama için kullanışlıdır.

 

LogOptions.FileName: dosya adının tam yolu.

 

Authentication

OAuth2 veya JWT kullanarak kimlik doğrulaması yapmanıza olanak tanır.

 

 

Asynchronous Requests

Varsayılan olarak, HTTP1Client bloke eden istekler kullanır, bu yüzden bir HTTP istek yöntemini çağırdıktan sonra istemci sunucudan gelen yanıtı bekler. Alternatif olarak, bu HTTP isteklerini ikincil bir iş parçacığında yürütmek için asenkron yöntemler kullanabilirsiniz, böylece isteğin çağrıldığı iş parçacığını bloke etmekten kaçınırsınız. Aşağıdaki asenkron yöntemler uygulanmıştır:

 

 

Bu yöntemleri çağırdıktan sonra, yanıtı beklemek yerine kod bir sonraki satıra devam eder ve yanıt OnAsyncResponse olayı kullanılarak işlenebilir.

 


procedure OnAsyncResultEvent(Sender: TObject; const aRequest:
    TsgcHTTPAsyncRequest; const aResponse: TIdHTTPResponse);

Asenkron istek işlenirken herhangi bir hata olursa, istisna OnAsyncException olayında oluşturulur.

 

Örnekler

HTTPs sunucusuna bir GET yöntemi isteği yapın ve TLS 1.2 kullanın


oHTTP := TsgcHTTP1Client.Create(nil);
Try
  oHTTP.TLSOptions.Version := tls1_2;
  ShowMessage(oHTTP.Get('https://www.google.es'));
Finally
  oHTTP.Free;
End;

openSSL 1.1 ve TLS 1.3 kullanarak HTTPs sunucusuna bir GET yöntemi isteyin


oHTTP := TsgcHTTP1Client.Create(nil);
Try
  oHTTP.TLSOptions.OpenSSL_Options.APIVersion := oslAPI_1_1;
  oHTTP.TLSOptions.Version := tls1_3;
  ShowMessage(oHTTP.Get('https://www.google.es'));
Finally
  oHTTP.Free;
End;

Bir Asenkron POST yöntemi isteyin ve yanıtı OnAsyncResultEvent kullanarak okuyun.

 


procedure OnAsyncExceptionEvent(Sender: TObject; const aThread:
    TsgcThread; const E: Exception);
begin
  Log(E.Message);
end;
procedure OnAsyncResultEvent(Sender: TObject; const aRequest:
    TsgcHTTPAsyncRequest; const aResponse: TIdHTTPResponse);
begin
  if aResponse.ResponseCode = 200 then
    Log('ok', aRequest.Response)
  else 
    Log('error', aRequest.Response);
end;
oHTTP := TsgcHTTP1Client.Create(nil);
oHTTP.OnAsyncResult := OnAsyncResultEvent;
oHTTP.OnAsyncException := OnAsyncResultEvent;
oRequest := TStringStream.Create('body');
oResponse := TStringStream.Create('');
oHTTP.PostAsync('https://localhost/test', oRequest, oResponse);

 

Windows için SChannel kullanarak HTTPs sunucusuna bir GET yöntemi isteyin.


oHTTP := TsgcHTTP1Client.Create(nil);
Try
  oHTTP.TLSOptions.IOHandler := iohSChannel;
  oHTTP.TLSOptions.Version := tls1_2;
  ShowMessage(oHTTP.Get('https://www.google.es'));
Finally
  oHTTP.Free;
End;

Veri olaylarını almak için SSE yöntemini isteyin

 


oHTTP := TsgcHTTP1Client.Create(nil);
oHTTP.OnSSEMessage := OnSSEMessageEvent;
oHTTP.GetSSE('https://www.yoursite.com/sse');
 
procedure OnSSEMessageEvent(Sender: TObject; const aMessage: string; var Cancel: Boolean);
begin
  ShowMessage(aMessage);
end;

 

Olaylar

OnSSEMessage

 

Bu olay, yeni bir SSE mesajı alındığında çağrılır.

 

OnSSLVerifyPeer

 

Sertifika doğrulaması etkinse, bu olayda sunucu sertifikasını doğrulayabilir ve kabul edip etmemeye karar verebilirsiniz.

 

OnSSLGetHandler

 

Bu olay, SSL işleyicisi oluşturulmadan önce tetiklenir. Burada kendi SSL işleyicinizi oluşturabilirsiniz (TIdServerIOHandlerSSLBase veya TIdIOHandlerSSLBase'den devralınması gerekir) ve gereken özellikleri ayarlayabilirsiniz.

 

OnSSLAfterCreateHandler

 

Özel bir SSL nesnesi oluşturulmamışsa, OpenSSL işleyicisi kullanılarak varsayılan bir tane oluşturulur. SSL işleyici özelliklerine erişebilir ve gerekirse değiştirebilirsiniz.

 

OnAsyncResult

 

Olay, bir Async yöntemi istendikten sonra (GetAsync, PutAsync... yöntemleri kullanılarak) çağrılır. İsteğin sonucunu öğrenmek için Response parametresini kullanın.

 

OnAsyncException

 

Bir asenkron istek işlenirken herhangi bir hata olursa, bu olay oluşturulan istisnayla birlikte çağrılır.