SOAP Web Servisind

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
petertohen
Üye
Mesajlar: 1
Kayıt: 21 Ağu 2017 05:25

SOAP Web Servisind

Mesaj gönderen petertohen »

Arkadaşlar merhaba, forumu uzuuun uzun araştırdım bu konu ile ama sıkıntıma bir çözüm bulamadığım için yeni konu açıyorum. Daha önce hiç webservisleriyle çalışmadım o yüzden sıfır bilgim vardı netten baka baka birşeyler yaptım ama bir yerde takıldım.

bir web servisinden veri okuyorum. WSDL in ne olduğunu öğrendim import ettim ve (elimde gerekli dokümanda var) dokümanımda belirtilen fonksiyonların hepsini gördüm, bu verileri "Servis.pas" diye kaydettim. sonuçta bana servis pas dosyasında şöyle bir yapı oluşturdu
KOD: TÜMÜNÜ SEÇ

MGWR1Result = class(TRemotable)
private
published
end;

ServiceSoap = interface(IInvokable)
['{C3236F57-64E7-B9D2-7776-2B908EA4F943}']
function Register_(const UserName: WideString; const Password: WideString; const Application_: WideString): WideString; stdcall;
function MGW1(const aa1: WideString; const ab1: WideString; const ac1: WideString; const ad1: WideString; const ae1: WideString; const af1: WideString;
const ag1: WideString): MGW1Result; stdcall;
end;

function GetServiceSoap(UseWSDL: Boolean=System.False; Addr: string=''; HTTPRIO: THTTPRIO = nil): ServiceSoap;

burda bir sürü fonksiyon var ben sadece iki tanesini yazdım. Neyse bunu nasıl kullanacağımı kurcalaya kurcalaya öğrenmeye çalışıyorum. şunu yaptım ve çalıştı.
KOD: TÜMÜNÜ SEÇ
procedure TForm1.Button1Click(Sender: TObject);
var DummyService: ServiceSoap;
result_string: WideString;
Begin
DummyService := GetServiceSoap(true, '');
result_string := DummyService.Register_('abc','abcde','test');
memo1.Lines.Add(result_string );
End;
bu register_ fonksiyonu string döndürdüğü için problem olmadı gelen değeri direk okuyabildim ve doğru sonuç verdi. yalnız bundan sonraki bütün fonksiyonlar TRemotable dan türemiş classları döndürüyor, örneğin burda yazdığım örnek MGW1 fonksiyonu MGW1Result diye bir tip döndürüyor gördüğünüz üzere. Bundan sonra şöyle bir kod yazdım
KOD: TÜMÜNÜ SEÇ
procedure TForm1.Button1Click(Sender: TObject);
var DummyService: ServiceSoap;
result_string : WideString;
result_var :MGW1Result;
Begin
DummyService := GetServiceSoap(true, '');

result_var := DummyService.MGW1('abc','abcs', '2009-07-20', '2009-07-21','','','');

işte bu noktadan sonra ne yapacağımı bir türlü bulamadım. Şöyle ki, DummyService.MGW1 fonksiyonunun çalıştığını biliyorum zira tarihi hatalı formatta verdim, karşıdan hata döndü hatalı format diye, düzgün formatı vreince verilerin geldiği belli olacak şekilde bekliyor sistem, veri çekiyor yani ve result_var değişkenine atıyor bunları. Fakat ben bu veriyi bu result_var 'ın içinden nasıl alacağımı bilmiyorum...

normal bir componentten farklı olarak 4 tane ek özelliği var, function ObjectToSoap, Procedure SoapToObject, Widestring DataContext, TSerializationOptions SerializationOptions... bunları kullanarak bu veriyi nasıl alacağımı bilmiyorum. elimdeki dokümana göre
KOD: TÜMÜNÜ SEÇ
<DataTableGW1 diffgr:id="DataTableGW11" msdata:rowOrder="0">
<AA1>148739</AA1>
<AB1>2008-05-23T11:10:17+03:00</AB1>
<AD1>34 TEST 34</AD1>
<AE1>Timed Event</AE1>
<AF1>13.787999153137207</AF1>
<AG1>30.3844051361084</AG1>
<AH1>40.713321685791016</AH1>
<AI1>41.610000610351562</AI1>
<AJ1>8</AJ1>
<AK1>2.7019999027252197</AK1>
<AL1>Türkiye</AL1>
<AM1>SAKARYA</AM1>
<AN1>MERKEZ</AN1>
<AO1>Arifbey</AO1>
<AR1>222.53999328613281</AR1>
<AW1>test</AW1>
<TM1>2008-05-23T11:10:17+03:00</TM1>
<MU1>234496</MU1>
<AY1>35</AY1>
</DataTableGW1>
şeklinde birşey dönmesi Lazım, ben ne yapacağımı bir türlü anlamdım. yardımcı olursanız ya da en azından yol gösterirseniz çok sevinirim.
http://www.service-architecture.com/art ... /soap.html
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3077
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: SOAP Web Servisind

Mesaj gönderen sabanakman »

MGW1Result tipinin tanmı nasıl?
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
ertank
Kıdemli Üye
Mesajlar: 1657
Kayıt: 12 Eyl 2015 12:45

Re: SOAP Web Servisind

Mesaj gönderen ertank »

Merhaba, sorunuzu WSDL dosyasını görmeden cevaplamak çok doğru olmayacaktır. Eğer sizin için sakıncası yok ise kod veya indirme linki paylaşır mısınız?
Cevapla