23-02-2019, Saat: 20:07
Merhaba.
- Windows'ta projenizin olduğu veya System Path içerisinde bir yere OpenSSL kütüphaneleri olan iki adet DLL dosyasını kopyalamak ile IdHttp ve TIdSSLIOHandlerSocketOpenSSL ikilisini sorunsuz kullanabiliyorduk. Bunu bir çoğumuz deneyimlemişizdir.
- Geçtiğimiz gün kurumda SSL erişimi için ANDROID projemde kullandığım HTTPS linklerine mobil platformdan erişirken lazım olduğunda kullandığım kütüphaneleri projemizde nasıl yapılandıracağımızı bir SSL erişim örneği ile özetleyeyim.
- Yine https://indy.fulgan.com/SSL/ linkinden başvurarak indireceğim Android destekli OpenSSL paketini indiriyoruz.
EKLEME: 64bit android platform için bu GitHub linkindeki kütüphaneleri kullanabilirsiniz.
Bu dosyayı bir klasöre açıyoruz içinde iki alt klasör göreceksiniz.
Bu alt klasörlerde ARM olanını açınca da
çıkan iki dosyayı projemiz ile deploy yani proje kurulumu yapılan mobil cihazın, projenize özel bir klasörüne koymasını sağlayacağız.
Bunun için PROJECT menüsünden alt kısımlar yakın olan DEPLOYMENT başlığını seçmeliyiz.
Burası çok önemli. Kırmızı ile daire içerisine aldığım Remote Path mutlaka.\assests\internal (yazım hatasını düzeltiyorum .\assets\internal ) şeklinde bize ait ulaşabileceğimiz bir klasör olsun ki aşağıda vereceğim örnekteki gibi TPath ile hazır erişim klasörlerinden erişebilelim.
Proje örneği... :idea:
Örnek Android projenizdeki forma bir TImageViewer yerleştirin ve aşağıdaki kodu yazın.
Buradaki kilit satır, SSL kütüphanenizin yerini bildiren şu satırdır.
- Windows'ta projenizin olduğu veya System Path içerisinde bir yere OpenSSL kütüphaneleri olan iki adet DLL dosyasını kopyalamak ile IdHttp ve TIdSSLIOHandlerSocketOpenSSL ikilisini sorunsuz kullanabiliyorduk. Bunu bir çoğumuz deneyimlemişizdir.
- Geçtiğimiz gün kurumda SSL erişimi için ANDROID projemde kullandığım HTTPS linklerine mobil platformdan erişirken lazım olduğunda kullandığım kütüphaneleri projemizde nasıl yapılandıracağımızı bir SSL erişim örneği ile özetleyeyim.
- Yine https://indy.fulgan.com/SSL/ linkinden başvurarak indireceğim Android destekli OpenSSL paketini indiriyoruz.
EKLEME: 64bit android platform için bu GitHub linkindeki kütüphaneleri kullanabilirsiniz.
Bu dosyayı bir klasöre açıyoruz içinde iki alt klasör göreceksiniz.
Bu alt klasörlerde ARM olanını açınca da
çıkan iki dosyayı projemiz ile deploy yani proje kurulumu yapılan mobil cihazın, projenize özel bir klasörüne koymasını sağlayacağız.
Bunun için PROJECT menüsünden alt kısımlar yakın olan DEPLOYMENT başlığını seçmeliyiz.
Burası çok önemli. Kırmızı ile daire içerisine aldığım Remote Path mutlaka
Proje örneği... :idea:
Örnek Android projenizdeki forma bir TImageViewer yerleştirin ve aşağıdaki kodu yazın.
Buradaki kilit satır, SSL kütüphanenizin yerini bildiren şu satırdır.
IdOpenSSLSetLibPath(TPath.GetDocumentsPath);
Uses Idhttp, IdSSLOpenSSL, IdSSLOpenSSLHeaders, System.IOUtils; // Project / Deployment altında ".\assets\internal\" klasörü altına SSL .so dosyaları eklenir. // IdOpenSSLSetLibPath(TPath.GetDocumentsPath) şeklinde bu klasör SSL path erişimine alınır procedure TForm1.Button1Click(Sender: TObject); Const CaptchaURL = 'https://optik.sgk.gov.tr/Optik_Firma_Web/CaptchaServlet'; var IdHttp : TIdHttp; IdSSLIOHandlerSocket : TIdSSLIOHandlerSocketOpenSSL; MS : TMemoryStream; CaptchaImage : TBitmap; begin IdHttp := TIdHttp.Create(nil); CaptchaImage := TBitmap.Create; // Android'de PNG kabul ediyor... IdSSLIOHandlerSocket := TIdSSLIOHandlerSocketOpenSSL.create(nil); MS := TMemoryStream.Create; try IdOpenSSLSetLibPath(TPath.GetDocumentsPath); IdSSLIOHandlerSocket.PassThrough := True; IdSSLIOHandlerSocket.SSLOptions.Method := TIdSSLVersion.sslvTLSv1_2; IdHttp.IOHandler := IdSSLIOHandlerSocket; IdHttp.Request.UserAgent := 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36'; // 'Dalvik/2.1.0 (Linux; U; Android 8.0.0; SM-N950F Build/R16NW)'; IdHttp.Get( CaptchaURL, MS ); MS.Position := 0; CaptchaImage.LoadFromStream( MS ); // Web'den Captcha Image geldi.. ImageViewer1.Bitmap := TBitmap.Create( Trunc(ImageViewer1.Width), Trunc(ImageViewer1.Height) ); ImageViewer1.Bitmap.Assign( CaptchaImage ); // Görelim... finally CaptchaImage.Free; IdHttp.Free; IdSSLIOHandlerSocket.Free; MS.Free; end; end;