Delphi Can
WSDL - SOAP classes must derive from TRemotable hatası - Baskı Önizleme

+- Delphi Can (http://www.delphican.com)
+-- Forum: Delphi (http://www.delphican.com/forumdisplay.php?fid=3)
+--- Forum: Genel Programlama (http://www.delphican.com/forumdisplay.php?fid=6)
+--- Konu Başlığı: WSDL - SOAP classes must derive from TRemotable hatası (/showthread.php?tid=4164)

Sayfalar: 1 2


WSDL - SOAP classes must derive from TRemotable hatası - pro_imaj - 08-11-2019

Merhaba,

Bir web servisten bilgi almaya çalışıyorum parametreleri gönderirken aşağıdaki hatayı alıyorum nedeni ne olabilir acaba. 
Alıntı:ESOAPDomConvertError Conversion from class TForm1 to SOAP is not supported - SOAP classes must derive from TRemotable


Ayarlar
HTTPRIO1=>WSDLLocation ilgili WDSL uzantısını yazdım.
HTTPRIO1 Pasword ve Username bilgileri girdim.


Kod
var
 Xml: tstringlist;
 Istek: binding.ZABCSGetLabelRequest;
 Sonuc: binding.ZABCSGetLabelResponse;
begin
 Istek.EbelgeA := '1';
 Istek.EbelgeB := '1';
 try
   Sonuc := binding.GetZABC_AB_LABEL(False, '', HTTPRIO1).ZwmGetLabel(Istek);
 except
   on E: Exception do
     ShowMessage(E.ClassName + ' Hata : ' +
       E.Message);
 end;

*Aynı WSDL'i Crome tarayıcıdan Browse WSDL eklentisi ile yukarıdaki parametrelerle test ettiğimde karşı taraftan gelen mesajları görebiliyorum.

Yardımlarınızı rica ederim.


WSDL - SOAP classes must derive from TRemotable hatası - adelphiforumz - 08-11-2019

@pro_imaj SoapUI ile denediğinde aynı hatayı alıyormusun

Tam emin olmamakla birlikte bu hatayı alabileceğiniz yer gelen data yapısı ile sizdeki wsdl yapısı uyuşmuyor sanırım özellikle array dönen yapılarda yeni importlar sorun çıkarıyor önerim aynı importu imkan dahilindeyse 2007 ile oluşturmanızdır
Yada sakıncası yok ise wsdl linkini gönderin bendeki 2007 ile oluşturup size göndereyim


WSDL - SOAP classes must derive from TRemotable hatası - sadettinpolat - 08-11-2019

Fiddler tarzı bir program ile Browse WSDL ile delphiden giden xml 'i yakalayıp bi karşılaştırın. Sorunu tespit ettikten sonra gönderilen xml ile ilgili bir sorunsa xml'e müdahale etme şansınız mevcut.


Cvp: WSDL - SOAP classes must derive from TRemotable hatası - pro_imaj - 08-11-2019

(08-11-2019, Saat: 15:31)adelphiforumz Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.@pro_imaj  SoapUI ile denediğinde aynı hatayı alıyormusun

Tam emin olmamakla birlikte bu hatayı alabileceğiniz yer gelen data yapısı ile sizdeki wsdl yapısı uyuşmuyor sanırım özellikle array dönen yapılarda yeni importlar sorun çıkarıyor önerim aynı importu imkan dahilindeyse 2007 ile oluşturmanızdır
Yada sakıncası yok ise wsdl linkini gönderin bendeki 2007 ile oluşturup size göndereyim

SoapUI ile sorunsuz çalışıyor.
Wsdl linkini vpn aracılığıyla açtırıyorlar bundan dolayı sizde çalışmayacaktır.

(08-11-2019, Saat: 16:14)sadettinpolat Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.Fiddler tarzı bir program ile Browse WSDL ile delphiden giden xml 'i yakalayıp bi karşılaştırın.  Sorunu tespit ettikten sonra gönderilen xml ile ilgili bir sorunsa xml'e müdahale etme şansınız mevcut.

Konuya tam hakim değilim araştırayım dediğinizi.


WSDL - SOAP classes must derive from TRemotable hatası - sadettinpolat - 08-11-2019

Fiddler yoksa bile soapui de zaten giden xmli görebiliyorsunuz , delphide ise httprio bileşeninin BeforeExecute metodunda gönderilen xml'e ulaşabiliyorsunuz. Buralardan giden gelen xml i karşılıklı kontrol ederek sorunu tespit edebilirsiniz.


Cvp: WSDL - SOAP classes must derive from TRemotable hatası - pro_imaj - 08-11-2019

(08-11-2019, Saat: 16:44)sadettinpolat Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.Fiddler yoksa bile soapui de zaten giden xmli görebiliyorsunuz , delphide ise httprio bileşeninin BeforeExecute metodunda gönderilen xml'e ulaşabiliyorsunuz. Buralardan giden gelen xml i karşılıklı kontrol ederek sorunu tespit edebilirsiniz.

BeforeExcute olayına girmeden bu hataya düşüyor, parametre gönderirken yanlışlık yapıyor olabilirim ama orada da bir şey bulamıyorum. Huh


Cvp: WSDL - SOAP classes must derive from TRemotable hatası - sadettinpolat - 08-11-2019

(08-11-2019, Saat: 17:05)pro_imaj Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
(08-11-2019, Saat: 16:44)sadettinpolat Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.Fiddler yoksa bile soapui de zaten giden xmli görebiliyorsunuz , delphide ise httprio bileşeninin BeforeExecute metodunda gönderilen xml'e ulaşabiliyorsunuz. Buralardan giden gelen xml i karşılıklı kontrol ederek sorunu tespit edebilirsiniz.

BeforeExcute olayına girmeden bu hataya düşüyor, parametre gönderirken yanlışlık yapıyor olabilirim ama orada da bir şey bulamıyorum. Huh

o zaman delphi doğru import edemiyordur servisi. biraz daha güncel bir versiyon ile denemek ya da import ederken bazı parametreler ile oynamak gerekebilir.


Cvp: WSDL - SOAP classes must derive from TRemotable hatası - pro_imaj - 10-11-2019

WSDL tarafında LabelCount'un tipi delphi tarafındaki karşılığı string yani aşağıdaki gibi.
numeric4  =  type string; 

Aynı tipte Count isminde bir değişken tanımlıyorum ve tipinide numeric4 olarak tanımlayıp 2 değeri veriyorum, sorun olmuyor fakat aşağıdaki gibi Istek.LabelCount := Count; dediğimde aşağıdaki hata oluşuyor. Sanırım veri tipleriyle ilgili sorun yaşanıyor.
qYIWBj.png

procedure TForm1.Button1Click(Sender: TObject);
var
Count : numeric4;
begin
Count  := '2';
Istek.LabelCount := Count;



WSDL - SOAP classes must derive from TRemotable hatası - sadettinpolat - 10-11-2019

istek adlı nesne create edilmemiş sanki.


Cvp: WSDL - SOAP classes must derive from TRemotable hatası - pro_imaj - 10-11-2019

(10-11-2019, Saat: 23:40)sadettinpolat Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.istek adlı nesne create edilmemiş sanki.

Create edilmiş durumda hocam, ilk soruda yazmıştım tekrar yazmadım sadece.

Debug modda baktığımda "Inaccessible value" erişilemez değer yazdığından olabilir belkide, fakat ilgili firmanın dokümanda; Çıktı sayısını almak için bu alana değer gönderin yazıyor.

Birde sizin yazdığınız önceki cevapta WSDL import ederken farklı ayarları deneyin yazmıştınız. Birkaç deneme yaptım fakat o kadar çok ayar var ki bir türlü sonuca ulaşamadım.