Yorumları: 2.021
Konuları: 246
Kayıt Tarihi: 09-08-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 4.374 Uzman
Merhabalar,
Hizmetim içerisinde , Birden fazla Wsdl servis kullanmaktayım, Gelen giden xml'leri takip ve loglama için HTTPRIO kullanıyorum ama, her farklı servis için yeni bir rio kullanmam gerekiyor.
Aynısını kullanırsam Interface hatası alıyorum.
El elden üstündür, siz bu gibi işlemler için nasıl bir yol izliyorsunuz.
Yorumları: 953
Konuları: 124
Kayıt Tarihi: 06-07-2017
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 6.375 Üstad
Merhaba Yakup Bey,
Ben Soap nesnesini kod ile üretiyorum. Rio çok stabil çalışmıyor.
Global olarak;
var
Soap: WebServiceSinifiSoap;
...
begin
Soap := GetWebServiceSinifiSoap(true,'',nil); // Soap import urlsi kullanan parametre ayarı bu şekilde. İsterseniz 2. parametreye soap wsdl url girebilirsiniz.
...
Aynı projede 4 ayrı servise kadar bağlanmayı bu şekilde sağlıyorum. Tüm Interface'ler canavar gibi çalışıyor
Yorumları: 2.021
Konuları: 246
Kayıt Tarihi: 09-08-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 4.374 Uzman
(16-01-2018, Saat: 13:38)Abdullah ILGAZ Adlı Kullanıcıdan Alıntı: Merhaba Yakup Bey,
Ben Soap nesnesini kod ile üretiyorum. Rio çok stabil çalışmıyor.
Global olarak;
var
Soap: WebServiceSinifiSoap;
...
begin
Soap := GetWebServiceSinifiSoap(true,'',nil); // Soap import urlsi kullanan parametre ayarı bu şekilde. İsterseniz 2. parametreye soap wsdl url girebilirsiniz.
...
Aynı projede 4 ayrı servise kadar bağlanmayı bu şekilde sağlıyorum. Tüm Interface'ler canavar gibi çalışıyor
Biliyorum da, bu şekilde xml loglarını nereden alıyorsunuz ?
Yorumları: 953
Konuları: 124
Kayıt Tarihi: 06-07-2017
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 6.375 Üstad
(16-01-2018, Saat: 15:01)yhackup Adlı Kullanıcıdan Alıntı: (16-01-2018, Saat: 13:38)Abdullah ILGAZ Adlı Kullanıcıdan Alıntı: Merhaba Yakup Bey,
Ben Soap nesnesini kod ile üretiyorum. Rio çok stabil çalışmıyor.
Global olarak;
var
Soap: WebServiceSinifiSoap;
...
begin
Soap := GetWebServiceSinifiSoap(true,'',nil); // Soap import urlsi kullanan parametre ayarı bu şekilde. İsterseniz 2. parametreye soap wsdl url girebilirsiniz.
...
Aynı projede 4 ayrı servise kadar bağlanmayı bu şekilde sağlıyorum. Tüm Interface'ler canavar gibi çalışıyor
Biliyorum da, bu şekilde xml loglarını nereden alıyorsunuz ?
İhtiyacınız olan xml logları ve örnek kullanımını gösterirseniz yardımcı olabilirim. Xml log ile daha önce hiç işim olmadı. Tüm servisler kendi kurduğumuz çatı üzerinde olduğu için her türlü hata ve sorun durumunda tespit edebiliyoruz. Log ile ilgili nasıl bir şey gerekli Yakup Bey?
Yorumları: 2.021
Konuları: 246
Kayıt Tarihi: 09-08-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 4.374 Uzman
(16-01-2018, Saat: 15:30)Abdullah ILGAZ Adlı Kullanıcıdan Alıntı: (16-01-2018, Saat: 15:01)yhackup Adlı Kullanıcıdan Alıntı: Biliyorum da, bu şekilde xml loglarını nereden alıyorsunuz ?
İhtiyacınız olan xml logları ve örnek kullanımını gösterirseniz yardımcı olabilirim. Xml log ile daha önce hiç işim olmadı. Tüm servisler kendi kurduğumuz çatı üzerinde olduğu için her türlü hata ve sorun durumunda tespit edebiliyoruz. Log ile ilgili nasıl bir şey gerekli Yakup Bey?
Örnek HTTPRIO BeforeExecute eventi,
procedure TXxxxxxxx.HTTPRIO2BeforeExecute(const MethodName: string; SOAPRequest: TStream);
var
intStrList : TStringList;
begin
try
intStrList := TStringList.Create;
SOAPRequest.Position := 0;
intStrList.LoadFromStream(SOAPRequest );
intStrList.SaveToFile(GlobalLogPath + 'REQUEST_'+GlobalID+'.xml');
finally
intStrList.Free;
end;
end;
Yorumları: 953
Konuları: 124
Kayıt Tarihi: 06-07-2017
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 6.375 Üstad
(16-01-2018, Saat: 16:09)yhackup Adlı Kullanıcıdan Alıntı: (16-01-2018, Saat: 15:30)Abdullah ILGAZ Adlı Kullanıcıdan Alıntı: İhtiyacınız olan xml logları ve örnek kullanımını gösterirseniz yardımcı olabilirim. Xml log ile daha önce hiç işim olmadı. Tüm servisler kendi kurduğumuz çatı üzerinde olduğu için her türlü hata ve sorun durumunda tespit edebiliyoruz. Log ile ilgili nasıl bir şey gerekli Yakup Bey?
Örnek HTTPRIO BeforeExecute eventi,
procedure TXxxxxxxx.HTTPRIO2BeforeExecute(const MethodName: string; SOAPRequest: TStream);
var
intStrList : TStringList;
begin
try
intStrList := TStringList.Create;
SOAPRequest.Position := 0;
intStrList.LoadFromStream(SOAPRequest );
intStrList.SaveToFile(GlobalLogPath + 'REQUEST_'+GlobalID+'.xml');
finally
intStrList.Free;
end;
end;
BeforeExecute metodunu dinlemek için RioAccess işinizi görürse şöyle bir şey buldum;
var
Interf: IServerInterface;
RIOAccess: IRIOAccess;
X: THTTPRIO;
begin
Intrf := GetIServerInterface(True,
'http://MyServices.org/scripts/AppServer.dll/wsdl');
RIOAccess := Intrf as IRIOAccess;
X := RIOAccess.RIO as THTTPRIO;
Yorumları: 2.021
Konuları: 246
Kayıt Tarihi: 09-08-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 4.374 Uzman
(16-01-2018, Saat: 17:03)Abdullah ILGAZ Adlı Kullanıcıdan Alıntı: (16-01-2018, Saat: 16:09)yhackup Adlı Kullanıcıdan Alıntı: Örnek HTTPRIO BeforeExecute eventi,
procedure TXxxxxxxx.HTTPRIO2BeforeExecute(const MethodName: string; SOAPRequest: TStream);
var
intStrList : TStringList;
begin
try
intStrList := TStringList.Create;
SOAPRequest.Position := 0;
intStrList.LoadFromStream(SOAPRequest );
intStrList.SaveToFile(GlobalLogPath + 'REQUEST_'+GlobalID+'.xml');
finally
intStrList.Free;
end;
end;
BeforeExecute metodunu dinlemek için RioAccess işinizi görürse şöyle bir şey buldum;
var
Interf: IServerInterface;
RIOAccess: IRIOAccess;
X: THTTPRIO;
begin
Intrf := GetIServerInterface(True,
'http://MyServices.org/scripts/AppServer.dll/wsdl');
RIOAccess := Intrf as IRIOAccess;
X := RIOAccess.RIO as THTTPRIO;
İstediğim bu değildi.
THTTPRIO'yu Bir serviste Kullandıktan sonra, Aynı Rio komponetini başka bir servisle de kullanabilmek istiyorum.
Sanırım , Kullandıktan sonra Rio komponetini bir şekilde temizlemem gerekiyor. Yeni bir servis ile kullanabilmem için
Yorumları: 953
Konuları: 124
Kayıt Tarihi: 06-07-2017
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 6.375 Üstad
(16-01-2018, Saat: 19:05)yhackup Adlı Kullanıcıdan Alıntı: (16-01-2018, Saat: 17:03)Abdullah ILGAZ Adlı Kullanıcıdan Alıntı: BeforeExecute metodunu dinlemek için RioAccess işinizi görürse şöyle bir şey buldum;
var
Interf: IServerInterface;
RIOAccess: IRIOAccess;
X: THTTPRIO;
begin
Intrf := GetIServerInterface(True,
'http://MyServices.org/scripts/AppServer.dll/wsdl');
RIOAccess := Intrf as IRIOAccess;
X := RIOAccess.RIO as THTTPRIO;
İstediğim bu değildi.
THTTPRIO'yu Bir serviste Kullandıktan sonra, Aynı Rio komponetini başka bir servisle de kullanabilmek istiyorum.
Sanırım , Kullandıktan sonra Rio komponetini bir şekilde temizlemem gerekiyor. Yeni bir servis ile kullanabilmem için
Tek nesneyi kullanma sebebiniz ortalık karışmasın düşüncesi ise, ilki ile işiniz bitince Free yapıp ikinci kullanımda tekrar oluşturunca size sorun mu çıkartıyor?
Arayüze bir HTTPRIO atmak yerine kod üzerinden oluştursanız, servis lazım olduğunda oluşsun, iş anında işini yapsın, iş bitince yok olsun. Oluşma ve iş yapma süreçlerini iki yada tek fonksiyona aktararak içine parametre olarak geçeceğiniz TAction veya farklı bir şey ile (ihtiyacınız ne ise) tetikleyip olacak bitecekleri tamamlayıp, fonksiyonun son satırında Free etmek tüm sorunları çözecektir diye düşünüyorum.
Yorumları: 2.021
Konuları: 246
Kayıt Tarihi: 09-08-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 4.374 Uzman
(17-01-2018, Saat: 09:25)Abdullah ILGAZ Adlı Kullanıcıdan Alıntı: (16-01-2018, Saat: 19:05)yhackup Adlı Kullanıcıdan Alıntı: İstediğim bu değildi.
THTTPRIO'yu Bir serviste Kullandıktan sonra, Aynı Rio komponetini başka bir servisle de kullanabilmek istiyorum.
Sanırım , Kullandıktan sonra Rio komponetini bir şekilde temizlemem gerekiyor. Yeni bir servis ile kullanabilmem için
Tek nesneyi kullanma sebebiniz ortalık karışmasın düşüncesi ise, ilki ile işiniz bitince Free yapıp ikinci kullanımda tekrar oluşturunca size sorun mu çıkartıyor?
Arayüze bir HTTPRIO atmak yerine kod üzerinden oluştursanız, servis lazım olduğunda oluşsun, iş anında işini yapsın, iş bitince yok olsun. Oluşma ve iş yapma süreçlerini iki yada tek fonksiyona aktararak içine parametre olarak geçeceğiniz TAction veya farklı bir şey ile (ihtiyacınız ne ise) tetikleyip olacak bitecekleri tamamlayıp, fonksiyonun son satırında Free etmek tüm sorunları çözecektir diye düşünüyorum.
Sorundan ziyada üşengeçlik diyelim
Her seferinde Create free vs kod kalabalığı yerine, komponet kullanıyorum.
Cevap için teşekkürler.
|