Delphi 7 ye indy 10 kurma

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Salih
Üye
Mesajlar: 250
Kayıt: 11 Mar 2004 05:36

Delphi 7 ye indy 10 kurma

Mesaj gönderen Salih »

Merhaba,

Bir projemizde kullandığımız WEB servisinde güncelleme yapıldı ve güvenlik nedeniyle SecurityProtocolType.Tls12 kullanmamız gerektiği söyleniyor. Indy 9.00.10 bileşenlerini kullanıyoruz ve anlayabildiğim kadarıyla IdSSLIOHandlerSocketOpenSSL bileşenini kullanmam lazım ve bu bileşen indy9'da yok, indy 10'da var.

* Yukarıda ifade etmeye çalıştığım sorun bu şekilde çözülür mü ?

? Çözülür ise, Indy 10 bileşenlerini nereden indirip kurabilirim ? www.indyproject.org/ sitesinden indiremiyorum.

Teşekkürler, Saygılar...
Sevgi, Saygı.....
Kullanıcı avatarı
loaded
Üye
Mesajlar: 122
Kayıt: 12 Eki 2010 09:45
Konum: Konya
İletişim:

Re: Delphi 7 ye indy 10 kurma

Mesaj gönderen loaded »

Merhaba,
Delphi 7 yerine alternatif olarak;
Lazarus 2.2.0 kullanabilirsiniz, Indy 10 destekli ve OPM (Online Package Manager) aracılığıyla paketin kurulumunu rahatlıkla yapabilirsiniz.
Kalk ve işe yarar bir şey yap! Çünkü Allah (c.c.) yeniden başlayanların yardımcısıdır.
Salih
Üye
Mesajlar: 250
Kayıt: 11 Mar 2004 05:36

Re: Delphi 7 ye indy 10 kurma

Mesaj gönderen Salih »

Lazarus önerinizi de değerlendireceğim. Ama Indy10'u delphi7'ye kurabilirsem daha hızlı çözebilirim sanki sorunu ?

Delphi 7de kullandığım diğer bileşenler vs her şey çalışır mı acaba Lazarus'da ?
Sevgi, Saygı.....
Kullanıcı avatarı
loaded
Üye
Mesajlar: 122
Kayıt: 12 Eki 2010 09:45
Konum: Konya
İletişim:

Re: Delphi 7 ye indy 10 kurma

Mesaj gönderen loaded »

Büyük ihtimalle çalışacaktır. Denemekte kuvvetli yarar var.
Kalk ve işe yarar bir şey yap! Çünkü Allah (c.c.) yeniden başlayanların yardımcısıdır.
Salih
Üye
Mesajlar: 250
Kayıt: 11 Mar 2004 05:36

Re: Delphi 7 ye indy 10 kurma

Mesaj gönderen Salih »

Lazarus indirdim kurdum, ama Lazarusa Indy 10 nereden kuracağız, indy 10 bulup download edemedim ki ?

Ankara'da olup ücreti karşılığında sorunla ilgilenebilecek kimse varsa bağlantıya geçebiliriz.

Syg.
Sevgi, Saygı.....
Kullanıcı avatarı
loaded
Üye
Mesajlar: 122
Kayıt: 12 Eki 2010 09:45
Konum: Konya
İletişim:

Re: Delphi 7 ye indy 10 kurma

Mesaj gönderen loaded »

Salih yazdı: 28 Nis 2022 03:54 Lazarus indirdim kurdum, ama Lazarusa Indy 10 nereden kuracağız, indy 10 bulup download edemedim ki ?
Lazarusu açın ardından Online Package Manager'ı çalıştırın Shift + Ctrl + Alt + O
İlgili paketi işaretleyip install edin. İndirme ve kurulum sonrasında Lazarus kendini yeniden başlatacaktır. Sonrasında sorunsuz çalışabilirsiniz.
Kalk ve işe yarar bir şey yap! Çünkü Allah (c.c.) yeniden başlayanların yardımcısıdır.
ertank
Kıdemli Üye
Mesajlar: 1650
Kayıt: 12 Eyl 2015 12:45

Re: Delphi 7 ye indy 10 kurma

Mesaj gönderen ertank »

Salih yazdı: 28 Nis 2022 01:20 Merhaba,

Bir projemizde kullandığımız WEB servisinde güncelleme yapıldı ve güvenlik nedeniyle SecurityProtocolType.Tls12 kullanmamız gerektiği söyleniyor. Indy 9.00.10 bileşenlerini kullanıyoruz ve anlayabildiğim kadarıyla IdSSLIOHandlerSocketOpenSSL bileşenini kullanmam lazım ve bu bileşen indy9'da yok, indy 10'da var.

* Yukarıda ifade etmeye çalıştığım sorun bu şekilde çözülür mü ?

? Çözülür ise, Indy 10 bileşenlerini nereden indirip kurabilirim ? www.indyproject.org/ sitesinden indiremiyorum.

Teşekkürler, Saygılar...
Soruna çözüm olur mu bilmiyorum. Web servis SOAP mı yoksa REST mi belirtmemişsiniz. REST için evet çözüm olacaktır. SOAP için emin değilim.

Delphi7 üzerine Indy10 kurullumu sitede daha önce açıklanmış. Genelde Delphi 7 kurulumunu kullanarak eski Indy paketlerini kaldırmanız tavsiye ediliyor.
viewtopic.php?p=203104#p203104

Indy10 kodlarını günümüzde aşağıdaki bağlantıdan temin edebilirsiniz. ZIP olarak indirebilir veya SVN veya GIT uygulamaları ile kodları direk alabilirsiniz.
https://github.com/IndySockets/Indy

Mümkün ise daha yeni Delphi sürümlerine geçiş planlamanızda fayda var.
Salih
Üye
Mesajlar: 250
Kayıt: 11 Mar 2004 05:36

Re: Delphi 7 ye indy 10 kurma

Mesaj gönderen Salih »

ertank yazdı: 28 Nis 2022 11:35
Salih yazdı: 28 Nis 2022 01:20 Merhaba,

Bir projemizde kullandığımız WEB servisinde güncelleme yapıldı ve güvenlik nedeniyle SecurityProtocolType.Tls12 kullanmamız gerektiği söyleniyor. Indy 9.00.10 bileşenlerini kullanıyoruz ve anlayabildiğim kadarıyla IdSSLIOHandlerSocketOpenSSL bileşenini kullanmam lazım ve bu bileşen indy9'da yok, indy 10'da var.

* Yukarıda ifade etmeye çalıştığım sorun bu şekilde çözülür mü ?

? Çözülür ise, Indy 10 bileşenlerini nereden indirip kurabilirim ? www.indyproject.org/ sitesinden indiremiyorum.

Teşekkürler, Saygılar...
Soruna çözüm olur mu bilmiyorum. Web servis SOAP mı yoksa REST mi belirtmemişsiniz. REST için evet çözüm olacaktır. SOAP için emin değilim.

Delphi7 üzerine Indy10 kurullumu sitede daha önce açıklanmış. Genelde Delphi 7 kurulumunu kullanarak eski Indy paketlerini kaldırmanız tavsiye ediliyor.
viewtopic.php?p=203104#p203104

Indy10 kodlarını günümüzde aşağıdaki bağlantıdan temin edebilirsiniz. ZIP olarak indirebilir veya SVN veya GIT uygulamaları ile kodları direk alabilirsiniz.
https://github.com/IndySockets/Indy

Mümkün ise daha yeni Delphi sürümlerine geçiş planlamanızda fayda var.
WEB Servis SOAP hocam. Cevabınız ve önerileriniz için çok teşekkür ederim.
Sevgi, Saygı.....
mkysoft
Kıdemli Üye
Mesajlar: 3103
Kayıt: 26 Ağu 2003 12:35
Konum: Berlin
İletişim:

Re: Delphi 7 ye indy 10 kurma

Mesaj gönderen mkysoft »

Ilan kismina yorum yapmistim, sorunuz burada da varmis. Arkadaslar paylasmis Indy 10 nasil kurulabilir diye. Indy 9'da bir yolu var mi emin degilim.
Guncelleme: Asagidaki cevaba gore Indy10'a guncellemeniz gerekiyormus.
https://stackoverflow.com/questions/603 ... ecting-ssl
ertank
Kıdemli Üye
Mesajlar: 1650
Kayıt: 12 Eyl 2015 12:45

Re: Delphi 7 ye indy 10 kurma

Mesaj gönderen ertank »

mkysoft yazdı: 29 Nis 2022 01:13 Ilan kismina yorum yapmistim, sorunuz burada da varmis. Arkadaslar paylasmis Indy 10 nasil kurulabilir diye. Indy 9'da bir yolu var mi emin degilim.
Guncelleme: Asagidaki cevaba gore Indy10'a guncellemeniz gerekiyormus.
https://stackoverflow.com/questions/603 ... ecting-ssl
Bu cevap muhtemelen REST web servis için verilmiş. Ya da bir web sitesinden veri okumak için. SOAP Web servis için uygulanabilir mi emin değilim.
mkysoft
Kıdemli Üye
Mesajlar: 3103
Kayıt: 26 Ağu 2003 12:35
Konum: Berlin
İletişim:

Re: Delphi 7 ye indy 10 kurma

Mesaj gönderen mkysoft »

IOHandler objesi iki nesne için de ortak, SOAP sorununu da çözecektir.
Salih
Üye
Mesajlar: 250
Kayıt: 11 Mar 2004 05:36

Re: Delphi 7 ye indy 10 kurma

Mesaj gönderen Salih »

indy 9'u kaldırmayı ve indy10 kurmayı sonunda başardım. Ancak web servise bağlanma sorunumu henüz çözemedim. Mevcut durumu detaylıca açıklayayım...

viewtopic.php?t=37040

adresinde mkysoft hocanın makalesindeki ipucunu kullandım. ssleay32.dll ve libeay32.dll dosyalarını projenin exe dosyası ile aynı dizine koydum. "idHttp.Get('https://www.mkysoft.com', s);" satırı çalıştığında 'HTTP/1.1 403 Forbidden mesajı alıyorum. Open SSL in düzgün çalıştığı anlamına geliyor diye yorumladım.

Aşağıdaki program yıllardır çalışan bir yapı. WEB servis sunucusu TLS1.2 ye geçince çalışmaz oldu.

Ulaşmaya çalıştığım web servisinin adresi şu şekilde http://gbo.isicamciyiz.biz/thirdparty.asmx?wsdl
Buradan thirdparty.WSDL dosyasını WSDL Importer ile çekip ayrı bir unit olarak projeye ekledim.

Programdan web servisi çağırdığım bölüm şu şekilde :

// mkysoft hocanın TLS1.2 ile ilgili yazdığı blok
IdOpenSSLSetLibPath(ExtractFilePath(Application.ExeName));
idSSLIOHandlerSocketOpenSSL1 := TIdSSLIOHandlerSocketOpenSSL.Create();
with idSSLIOHandlerSocketOpenSSL1 do
begin
SSLOptions.Method := sslvTLSv1_2;
SSLOptions.SSLVersions := [sslvTLSv1_2];
SSLOptions.Mode := sslmUnassigned;
SSLOptions.VerifyMode := [];
SSLOptions.VerifyDepth := 2;
end;
idHttp1 := TIdHttp.Create();
// mkysoft hocanın yazdığı blok sonu

//WEB servisi çağırdığım bölüm
try
IdHTTP1.request.UserAgent := 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:56.0) Gecko/20100101 Firefox/56.0';
strStream := idhttp1.Get('https://gbo.isicamciyiz.biz/thirdparty.asmx?WSDL');
// (Bu satırda daha önce hata veriyordu, şimdi hata vermeden geçiyor
except
raise Exception.Create('Internet bağlantısı yok');
end;

yGBO := GBO.Create;
yUrun := Urun.Create;
ySonuc:= Yanit.Create;
myList := TList.Create;
SeriNo := '';
EdGarNo.Text := SeriNo;

UrunEkle(self); // öncelikle bir veya daha fazla urun eklenmesi gerekiyor. bir tane ürün ekledik, hata vermeden geçti.

try
HTTPRIO1.HTTPWebNode.UseUTF8InHeader := True;
Servis :=GetthirdpartySoap(False, 'http://gbo.isicamciyiz.biz/thirdparty.asmx', HTTPRIO1);
// Servis :=GetthirdpartySoap(True); //ERNUR deneme

yGBO.serviceuser := '';
yGBO.servicepassword := '';
yGBO.cariId := 'xxxx';
yGBO.caripassword := 'xxxxxx';
yGBO.musteriAdSoyad := EdMusteri.Text;
yGBO.firmaAdi := EdBayi.Text;
yGBO.faturaTarihi := EdFatTarih.Text;
yGBO.faturaNo := EdFatNo.Text;
yGBO.vergiNo := EdVergiNo.Text;
yGBO.MukerrerGBKontrol := True;
yGBO.Type_ := 'C';

SetLength(yArray, MyList.Count);
For i := 0 To MyList.Count-1 Do
yArray := MyList;

ySonuc := Servis.garantiBelgesiOlusturV2(yGBO, yArray); // HATA MESAJI ALDIĞIMIZ SATIR BURASI İŞTE

// WEB servisten gelen verileri alıp değerlendirdiğimiz bölüm

PRAdres := ySonuc.productTable;
QRAdres := ySonuc.QRcode;
QRRefno := ySonuc.QRrefno;
SeriNo := ySonuc.serialNo;
Status := ySonuc.status;
..
...
....
.....



Urunekle bölümü

procedure TForm1.UrunEkle(Sender: TObject);
begin
Screen.Cursor := crSQLWait;
try
yUrun.adet := strToInt(EDAdet.Text);
yUrun.metrekare := TXSDecimal.Create;
yUrun.metrekare.DecimalString := EDAlan.Text;
yUrun.urunSeri := C;
yurun.ucluSistem := true;
... diğer yurun.xx değişkenlerine atamalar

myList.Add(yUrun); // yeni WEB serviste kullanılan yöntem
finally
Screen.Cursor := crDefault;
end;
end;



ySonuc := Servis.garantiBelgesiOlusturV2(yGBO, yArray); // bu satırda aldığımız hata mesajı şu şekilde :

---------------------------
Debugger Exception Notification
---------------------------
Project siparis.exe raised exception class EDOMParseError with message 'End tag 'ul' does not match the start tag 'p'.

Line: 96
</ul>'. Process stopped. Use Step or Run to continue.
---------------------------
OK Help
---------------------------


HTTPRIO1BeforeExecute bölümünde yazılan SoapRequest şu şekilde :
<?xml version="1.0"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<SOAP-ENV:Body>
<garantiBelgesiOlusturV2 xmlns="http://tempuri.org/"> // bu adres mi hatalı acaba ? ama önceden de bu şekildeydi
<garantiBelgesi>
<serviceuser></serviceuser>
<servicepassword></servicepassword>
<cariId>123456</cariId>
<caripassword>123456</caripassword>
<musteriAdSoyad>Ahmet YILMAZ</musteriAdSoyad>
<firmaAdi>Müşteri adı 1</firmaAdi>
<faturaTarihi>21.04.2022</faturaTarihi>
<faturaNo>012346</faturaNo>
<vergiNo>123456789</vergiNo>
<MukerrerGBKontrol>true</MukerrerGBKontrol>
<Type>C</Type>
</garantiBelgesi>
<myUrunList>
<Urun>
<urunSeri>C</urunSeri>
<adet>1</adet>
<InvoiceLineNumber>1</InvoiceLineNumber>
<metrekare>12.34</metrekare>
<ucluSistem>false</ucluSistem>
<T>false</T>
<R>false</R>
<RF>false</RF>
<L>false</L>
<AL>false</AL>
<ip></ip>
<CCBProductId>1</CCBProductId>
</Urun>
</myUrunList>
</garantiBelgesiOlusturV2>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>


HTTPRIO1AfterExecute bölümünde yazılan SoapResponse şu şekilde :
<html>

<head><link rel="alternate" type="text/xml" href="/thirdparty.asmx?disco" />

<style type="text/css">

BODY { color: #000000; background-color: white; font-family: Verdana; margin-left: 0px; margin-top: 0px; }
#content { margin-left: 30px; font-size: .70em; padding-bottom: 2em; }
A:link { color: #336699; font-weight: bold; text-decoration: underline; }
A:visited { color: #6699cc; font-weight: bold; text-decoration: underline; }
A:active { color: #336699; font-weight: bold; text-decoration: underline; }
A:hover { color: cc3300; font-weight: bold; text-decoration: underline; }
P { color: #000000; margin-top: 0px; margin-bottom: 12px; font-family: Verdana; }
pre { background-color: #e5e5cc; padding: 5px; font-family: Courier New; font-size: x-small; margin-top: -5px; border: 1px #f0f0e0 solid; }
td { color: #000000; font-family: Verdana; font-size: .7em; }
h2 { font-size: 1.5em; font-weight: bold; margin-top: 25px; margin-bottom: 10px; border-top: 1px solid #003366; margin-left: -15px; color: #003366; }
h3 { font-size: 1.1em; color: #000000; margin-left: -15px; margin-top: 10px; margin-bottom: 10px; }
ul { margin-top: 10px; margin-left: 20px; }
ol { margin-top: 10px; margin-left: 20px; }
li { margin-top: 10px; color: #000000; }
font.value { color: darkblue; font: bold; }
font.key { color: darkgreen; font: bold; }
font.error { color: darkred; font: bold; }
.heading1 { color: #ffffff; font-family: Tahoma; font-size: 26px; font-weight: normal; background-color: #003366; margin-top: 0px; margin-bottom: 0px; margin-left: -30px; padding-top: 10px; padding-bottom: 3px; padding-left: 15px; width: 105%; }
.button { background-color: #dcdcdc; font-family: Verdana; font-size: 1em; border-top: #cccccc 1px solid; border-bottom: #666666 1px solid; border-left: #cccccc 1px solid; border-right: #666666 1px solid; }
.frmheader { color: #000000; background: #dcdcdc; font-family: Verdana; font-size: .7em; font-weight: normal; border-bottom: 1px solid #dcdcdc; padding-top: 2px; padding-bottom: 2px; }
.frmtext { font-family: Verdana; font-size: .7em; margin-top: 8px; margin-bottom: 0px; margin-left: 32px; }
.frmInput { font-family: Verdana; font-size: 1em; }
.intro { margin-left: -15px; }

</style>

<title>
thirdparty Web Service
</title></head>

<body>

<div id="content">

<p class="heading1">thirdparty</p><br>

<span>

<p class="intro">The following operations are supported. For a formal definition, please review the <a href="thirdparty.asmx?WSDL">Service Description</a>. </p>

<ul>

<li>
<a href="thirdparty.asmx?op=CertificateCancel">CertificateCancel</a>

</li>
<p>

<li>
<a href="thirdparty.asmx?op=GuaranteeCertificateIsCreatedByInvoiceNumber">GuaranteeCertificateIsCreatedByInvoiceNumber</a>


</li>
<p>

<li>
<a href="thirdparty.asmx?op=garantiBelgesiOlustur">garantiBelgesiOlustur</a>


</li>
<p>

<li>
<a href="thirdparty.asmx?op=garantiBelgesiOlusturV2">garantiBelgesiOlusturV2</a>

</li>
<p>

<li>
<a href="thirdparty.asmx?op=urunEkle">urunEkle</a>

</li>
<p>

<li>
<a href="thirdparty.asmx?op=urunEkleV2">urunEkleV2</a>

</li>
<p>

</ul>

</span>


<span>

</span>

<span>
<hr>
<h3>This web service is using http://tempuri.org/ as its default namespace.</h3>
<h3>Recommendation: Change the default namespace before the XML Web service is made public.</h3>
<p class="intro">Each XML Web service needs a unique namespace in order for client applications to distinguish it from other services on the Web. http://tempuri.org/ is available for XML Web services that are under development, but published XML Web services should use a more permanent namespace.</p>
<p class="intro">Your XML Web service should be identified by a namespace that you control. For example, you can use your company's Internet domain name as part of the namespace. Although many XML Web service namespaces look like URLs, they need not point to actual resources on the Web. (XML Web service namespaces are URIs.)</p>
<p class="intro">For XML Web services creating using ASP.NET, the default namespace can be changed using the WebService attribute's Namespace property. The WebService attribute is an attribute applied to the class that contains the XML Web service methods. Below is a code example that sets the namespace to "http://microsoft.com/webservices/":</p>
<p class="intro">C#</p>
<pre>[WebService(Namespace="http://microsoft.com/webservices/")]
public class MyWebService {
// implementation
}</pre>
<p class="intro">Visual Basic</p>
<pre>&lt;WebService(Namespace:="http://microsoft.com/webservices/")&gt; Public Class MyWebService
' implementation
End Class</pre>

<p class="intro">C++</p>
<pre>[WebService(Namespace="http://microsoft.com/webservices/")]
public ref class MyWebService {
// implementation
};</pre>
<p class="intro">For more details on XML namespaces, see the W3C recommendation on <a href="http://www.w3.org/TR/REC-xml-names/">Namespaces in XML</A>.</p>
<p class="intro">For more details on WSDL, see the <a href="http://www.w3.org/TR/wsdl">WSDL Specification</a>.</p>
<p class="intro">For more details on URIs, see <a href="http://www.ietf.org/rfc/rfc2396.txt">RFC 2396</a>.</p>
</span>
</body>
</html>




Günlerdir uğraşarak gelebildiğim nokta malesef burası, hata mesajı ile ilgili ve web servisle ilgili yardım edebilecek arkadaşlara şimdiden teşekkür ederim.
Sevgi, Saygı.....
ertank
Kıdemli Üye
Mesajlar: 1650
Kayıt: 12 Eyl 2015 12:45

Re: Delphi 7 ye indy 10 kurma

Mesaj gönderen ertank »

idHttp1 nesnesine daha önce oluşturulup hazırlanan IO Handler'ı kullanması gerektiğini bildirmemişsiniz.

Kod: Tümünü seç

idHttp1 := TIdHttp.Create();
idHttp1.IOHandler := idSSLIOHandlerSocketOpenSSL1; // Bu satır eklenmeli
Çok uzun zaman oldu Indy kullanmıyorum. idHttp1.IOHandler yanlış olabilir. Kontrol edip doğrusunu yazmanız gerekebilir.
Salih
Üye
Mesajlar: 250
Kayıt: 11 Mar 2004 05:36

Re: Delphi 7 ye indy 10 kurma

Mesaj gönderen Salih »

ertank yazdı: 05 May 2022 01:54 idHttp1 nesnesine daha önce oluşturulup hazırlanan IO Handler'ı kullanması gerektiğini bildirmemişsiniz.

Kod: Tümünü seç

idHttp1 := TIdHttp.Create();
idHttp1.IOHandler := idSSLIOHandlerSocketOpenSSL1; // Bu satır eklenmeli
Çok uzun zaman oldu Indy kullanmıyorum. idHttp1.IOHandler yanlış olabilir. Kontrol edip doğrusunu yazmanız gerekebilir.
Yanıt için teşekkür ederim, Idhttp1.IOHandler şu şekilde tanımlı durumda :
https://www.hizliresim.com/m0lyw00

Resim
Sevgi, Saygı.....
mkysoft
Kıdemli Üye
Mesajlar: 3103
Kayıt: 26 Ağu 2003 12:35
Konum: Berlin
İletişim:

Re: Delphi 7 ye indy 10 kurma

Mesaj gönderen mkysoft »

HTTPRIO1 nesnesi icin IOHandler atamayi unutmussunuz sanirim.
Cevapla