Tüm Platformlar için Hızlı Uygulama Geliştirme --->    Kitabımız...      Delphi

Konuyu Paylaş : facebook gplus twitter

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.
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Kuvvete dayanamayan adalet aciz, 
Adalete dayanamayan kuvvet zalimdir.
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
{ talk is cheap show me the code. }
Cevapla
#3
(16-01-2018, Saat: 13:38)Abdullah ILGAZ Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlMerhaba 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 ?
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Kuvvete dayanamayan adalet aciz, 
Adalete dayanamayan kuvvet zalimdir.
WWW
Cevapla
#4
(16-01-2018, Saat: 15:01)yhackup Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
(16-01-2018, Saat: 13:38)Abdullah ILGAZ Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlMerhaba 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?
{ talk is cheap show me the code. }
Cevapla
#5
(16-01-2018, Saat: 15:30)Abdullah ILGAZ Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
(16-01-2018, Saat: 15:01)yhackup Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlBiliyorum 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;
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Kuvvete dayanamayan adalet aciz, 
Adalete dayanamayan kuvvet zalimdir.
WWW
Cevapla
#6
(16-01-2018, Saat: 16:09)yhackup Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
(16-01-2018, Saat: 15:30)Abdullah ILGAZ Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye Olİ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;
{ talk is cheap show me the code. }
Cevapla
#7
(16-01-2018, Saat: 17:03)Abdullah ILGAZ Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
(16-01-2018, Saat: 16:09)yhackup Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlÖ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
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Kuvvete dayanamayan adalet aciz, 
Adalete dayanamayan kuvvet zalimdir.
WWW
Cevapla
#8
(16-01-2018, Saat: 19:05)yhackup Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
(16-01-2018, Saat: 17:03)Abdullah ILGAZ Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlBeforeExecute 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.
{ talk is cheap show me the code. }
Cevapla
#9
(17-01-2018, Saat: 09:25)Abdullah ILGAZ Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
(16-01-2018, Saat: 19:05)yhackup Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye Olİ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.
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Kuvvete dayanamayan adalet aciz, 
Adalete dayanamayan kuvvet zalimdir.
WWW
Cevapla

Konuyu Paylaş : facebook gplus twitter





Konuyu Okuyanlar: 1 Ziyaretçi