TsgcHTTP1Client, TIdHTTP indy bileşeninden miras alan ve bazı yeni özellikler ekleyen görsel olmayan bir bileşendir.
Bu bileşen sgcHTTP biriminde bulunur.
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
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.
OAuth2 veya JWT kullanarak kimlik doğrulaması yapmanıza olanak tanır.
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.
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;
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.