Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
THTTPRIO Hk
#1
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.


0E8qRV.png

El elden üstündür, siz bu gibi işlemler için nasıl bir yol izliyorsunuz.
WWW
Cevapla
#2
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 Smile
Cevapla
#3
(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 Smile

Biliyorum da, bu şekilde xml loglarını nereden alıyorsunuz ?
WWW
Cevapla
#4
(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 Smile

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?
Cevapla
#5
(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;
WWW
Cevapla
#6
(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;
Cevapla
#7
(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
WWW
Cevapla
#8
(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.
Cevapla
#9
(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 Smile
Her seferinde Create free vs kod kalabalığı yerine, komponet kullanıyorum.

Cevap için teşekkürler.
WWW
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Delphi RIO da THTTPRio.WebNode.BeforePost Değişikliği vkamadan 4 2.775 26-12-2021, Saat: 15:18
Son Yorum: idealist
  THTTPRIO Timeout hk yhackup 4 4.032 07-08-2018, Saat: 09:28
Son Yorum: mrmarman



Konuyu Okuyanlar: 1 Ziyaretçi