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
SOAP Web Servisind
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
- 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
MGW1Result tipinin tanmı nasıl?
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .
Re: SOAP Web Servisind
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?