Delphi ve XML webservisleri

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
otonomi
Üye
Mesajlar: 6
Kayıt: 09 Mar 2008 06:23

Delphi ve XML webservisleri

Mesaj gönderen otonomi »

Merhaba,

Embarcadero Delphi 2010 kullaniyorum, uzerinde DevXpress VCL v50 kurdum.

Yapmak istedigim sey; doviz kurlarini bi xml servisinden alip ekrana koyacak

asagidaki adresi "Import WSDL" ile import etmeye calistim, kabul etmiyor.
http://www.dovizaltinfiyatlari.net/serbestxml/

Bana adim adim;
* hangi componentle
* hangi adrese baglanip
* bilgileri ekranda nasil koyacagimi

anlatabilecek birisi var mi?

Mumkunse; basitce bi ornek program hazirlanip gpnderilirse aynen;
Allah'tan isterim bi goz, Allah verir iki goz

:)

simdiden tesekkurler
orhancc
Üye
Mesajlar: 585
Kayıt: 24 Ağu 2010 02:14
Konum: İstanbul / Kadıköy
İletişim:

Re: Delphi ve XML webservisleri

Mesaj gönderen orhancc »

C# da şöyle birşey kullanıyorum belki bir fikir verir.

Kod: Tümünü seç

 private void KurGetir()
        {
            var xmlReader = new XmlTextReader("http://www.tcmb.gov.tr/kurlar/today.xml");
            var xmlDocument = new XmlDocument();
            xmlDocument.Load(xmlReader);
            XmlNode topNode = xmlDocument.DocumentElement;

            var dolarAlis = xmlDocument.SelectSingleNode("//Tarih_Date//Currency[Kod='USD']|//ForexBuying");
            var dolarSatis = xmlDocument.SelectSingleNode("//Tarih_Date//Currency[Kod='USD']|//ForexSelling");
            var usdAlis = dolarAlis.InnerText;
            var usdSatis = dolarSatis.InnerText;
            lblDolarAlis.Text += usdAlis.ToString();
            lblDolarSatis.Text += usdSatis.ToString();


            if (topNode == null) return;
            var euroAlis = topNode.SelectSingleNode("//Tarih_Date//Currency[CurrencyName='EURO']//ForexBuying");
            var euroSatis = topNode.SelectSingleNode("//Tarih_Date//Currency[CurrencyName='EURO']//ForexSelling");


            var strEuroSatis = euroSatis.InnerText;
            var strEuroAlis = euroAlis.InnerText;
            lblEuroAlis.Text += strEuroAlis.ToString();
            lblEuroSatis.Text += strEuroSatis.ToString();
        }
    }
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Re: Delphi ve XML webservisleri

Mesaj gönderen aslangeri »

s.a.
göndermiş olduğunuz adres web servisi değil xml dosyası. servisin adresi nedir.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
unicorn64
Üye
Mesajlar: 919
Kayıt: 04 Nis 2006 08:56
Konum: yine yeniden Ankara ^_^

Re: Delphi ve XML webservisleri

Mesaj gönderen unicorn64 »

kaynak sitedekilere göre bunlar web servisiymiş :alsana:

http://www.dovizaltinfiyatlari.net/webservisleri.html

halbuki ortada bizim anladığımız manada bir web servisi yok sanırım, yada onlar bir web servisine bağlanıp sorgu çekiyorlar ve dönen cevabı da xml olarak basmışlar açılan sayfada...

dönen xml i parse ederek değerlere ulaşabilirsiniz... benzer konular daha önce forumda konuşulmuştu...

yada xmldoc ile xmlin nodelarına erişip istediğiniz değerleri alabilirsiniz...

:ara html xml parse, pos,copy,posex,idhttp, ....... :ara
bazen yükselmek için önce dibi görmek gerekir...

forumda soru sormadan önce bakılmalı bence
daha fazlası için...

yürümeyi öğrenmeden koşmaya çalışanlar için, tökezleyip düşmek kaçınılmazdır...

Resim
otonomi
Üye
Mesajlar: 6
Kayıt: 09 Mar 2008 06:23

Re: Delphi ve XML webservisleri

Mesaj gönderen otonomi »

Sevgili Orhancc,

Öncelikle gosterdiğin ilgi için teşekkür ederim. Emek sarfedip bana fikir verecek c# kodu hazırlamışsın.

Ancak bunu Delphi 2010'da uygulayamadım.

Arkadaslar, aslinda yapmak istedigim şey; Delphi 2010'da webservislerine nasıl bağlanıp bilgi alırım?

Halen geliştirmekte olduğum projeye, MERNIS projesinin KPS webservisinden bilgi çekmem lazım. Adamlar bize webservis adresini ve kullanıcı adını şifreyi vs. vereceklerini söylüyorlar. Ancak Delphi 2010 ile nasıl bağlanıp sorgulama yapacağımı bilmiyorum.

Bunu öğrenmek istiyorum. Bu yüzden, en basit olan "döviz kurları" meselesini seçtim.

Aslında MERNIS'in XML webservislerinden, Delphi 2010 ile sorgulama yapma kodunu, bi arkadaş paylaşırsa, daha çok makbule geçer :D

Piyasada ücretsiz herkese açık pek çok webservisi var. Bunlardan birine dair, örneğin döviz kuru, Delphi 2010 ile daha önce bi uygulama yapan var mı?

Şimdiden teşekkürler

İyi çalışmalar
otonomi
Üye
Mesajlar: 6
Kayıt: 09 Mar 2008 06:23

Re: Delphi ve XML webservisleri

Mesaj gönderen otonomi »

Arkadaşlar,

Bu konuda yardımcı olabilecek birilerine ihtiyacım var.

şimdiden teşekkürler...
otonomi
Üye
Mesajlar: 6
Kayıt: 09 Mar 2008 06:23

Re: Delphi ve XML webservisleri

Mesaj gönderen otonomi »

Arkadaslar,

Soruyu şöyle sorayım o zaman;

Delphi ile XML web servislerine bağlanıp sorgulama yapmak mümkün mü?

iyi çalışmalar
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Re: Delphi ve XML webservisleri

Mesaj gönderen aslangeri »

s.a.
evet yapılabilir.
kullandığın delphinin versiyonu nedir.
eski model araçlarla yeni tür işlemler yapmak zor iş.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
unicorn64
Üye
Mesajlar: 919
Kayıt: 04 Nis 2006 08:56
Konum: yine yeniden Ankara ^_^

Re: Delphi ve XML webservisleri

Mesaj gönderen unicorn64 »

evet mümkün tabiki, forumda da çok kez konuşuldu, örnek projeler de var hatta....

viewtopic.php?f=19&t=6153&hilit=kps

web servislerine bağlanıp sorgu çekebilmek için, öncelikle web servisinin WSDL dosyasını delphiye import ederek pas dosyasını oluşturmalısınız. bu pas dosyasında servisin tanımı, fonksiyonları, fonksiyonlara geçilen parametrelerin ve dönen değerlerin tipi nesne ise sınıf tanımları yer alır.

web servisinden sorgu çekmek için httprio bileşeni kullanılır.

daha detaylı bilgi için :ara xml web servisi, httprio
bazen yükselmek için önce dibi görmek gerekir...

forumda soru sormadan önce bakılmalı bence
daha fazlası için...

yürümeyi öğrenmeden koşmaya çalışanlar için, tökezleyip düşmek kaçınılmazdır...

Resim
varyemez
Üye
Mesajlar: 262
Kayıt: 01 Oca 2009 11:00
Konum: Bursa
İletişim:

Re: Delphi ve XML webservisleri

Mesaj gönderen varyemez »

O belirttiğiniz adreste web servisi yok. Sadece xml formatında bir çıktı geliyor. Siz bunu makinanıza xml uzantılı dosya halinde kaydedin önce. sonra clientdataset içine alıp dbgrid ile tablo halinde gösterebilir ve istediğiniz şekilde kullanırsınız
otonomi
Üye
Mesajlar: 6
Kayıt: 09 Mar 2008 06:23

Re: Delphi ve XML webservisleri

Mesaj gönderen otonomi »

Arkadaşlar,

Öncelikle gösterdiğiniz ilgi için teşekkür ederim.

epeydir araştırdıktan sonra, herkese açık bi WSDL adresi buldum.

Delphi 2010'da 'Import WSDL' ile bu adresi belirttim. pas uzantılı bi dosya oluştu. Bu dosyanın içindeki bilgileri nasıl sorgularım?

Sorgu sonucunu ekrana nasıl getiririm?

Adres şöyle;
http://www.weather.gov/forecasts/xml/DW ... fdXML.wsdl

Bu adresteki WSDL servisini şehir ismi ile sorgulayabiliyoruz, anladığım kadarıyla...

Şehir ismine, örneğin; 'Ohiopyle' girdiğimizde, o şehrin 7 günlük tahminini alabiliyoruz.

Şunu yapabilirsem, istediğimi öğrenmiş olurum:
Boş bir form oluşturup, bi "editbox1" ve 'Button1' koyacağım. Programı çalıştırdığımda, Editbox1in içine 'Ohiopyle' yazıp BUtton1'e tıkladığımda, gidip servisi sorgulayacak ve sonuçları ekrandaki diğer kutucuklara ve ya grid'e basacak...

Bununla ilgili örnek bi kod yazar mısınız lütfen?

Bu konuda anlayışınızı bekliyorum.

iyi çalışmalar
varyemez
Üye
Mesajlar: 262
Kayıt: 01 Oca 2009 11:00
Konum: Bursa
İletişim:

Re: Delphi ve XML webservisleri

Mesaj gönderen varyemez »

Aşağıda kabaca bir örnek kalıp verdim. Tabii çalışmıyor. Ancak servislerdeki fonksiyonları ve değişkenlerin kullanılışını bilirsen kolayca sorgulayabilirsin. Bu wsdl yanında uzunca bir de açıklaması olmalı nasıl kullanılacağı hakında. Çok iyi incelemen lazım..

Kod: Tümünü seç


unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, InvokeRegistry, Rio, SOAPHTTPClient,ndfdXML, StdCtrls,XSBuiltIns,
  ComCtrls;

type
  TForm1 = class(TForm)
    HTTPRIO1: THTTPRIO;
    Button1: TButton;
    Memo1: TMemo;
    DateTimePicker1: TDateTimePicker;
    DateTimePicker2: TDateTimePicker;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    function servisal: ndfdXMLPortType;
  end;

var
  Form1: TForm1;

implementation

procedure TForm1.Button1Click(Sender: TObject);
var
bastar,bittar:TXSDateTime;
lat,long:TXSDecimal;
lat1,long1:Double;
svc:ndfdXMLPortType;
girdi:weatherParametersType;
uruntip: productType;
cikti:listLatLonType;
begin
 lat:=TXSDecimal.Create;
 long:=TXSDecimal.Create;
 lat.XSToNative('26.54');

long.XSToNative('45.547');
bastar:=TXSDatetime.Create ;
bittar:=TXSDatetime.Create;
bastar.AsDateTime:=datetimepicker1.DateTime;
bittar.AsDateTime:=datetimepicker2.DateTime;
girdi.Create;
girdi.maxt:=true;
girdi.mint:=true;


svc:=servisal;
cikti:=svc.NDFDgen(lat,long,uruntip,bastar,bittar,girdi);
memo1.Lines.Add(cikti);


end;

function TForm1.servisal:ndfdXMLPortType;
Begin
Result:= (HTTPRIO1 as ndfdXMLPortType);
End;



{$R *.dfm}

end.


Kullanıcı avatarı
tinekci
Üye
Mesajlar: 18
Kayıt: 11 Tem 2010 01:59

Re: Delphi ve XML webservisleri

Mesaj gönderen tinekci »

Arkadaşım,

Eğer xml adresi alıcaksan xml data binding yapıcan Import wsdl değil..

File->New->Other->XML->xml data binding

Schema or xml data file yazan bolume xml in alınacağı web adresini yaz ileri deyip yönergeleri izle..

Sadece wsdl adresleri import wsdl yapılabiliyor..
otonomi
Üye
Mesajlar: 6
Kayıt: 09 Mar 2008 06:23

Re: Delphi ve XML webservisleri

Mesaj gönderen otonomi »

varyemez yazdı:Aşağıda kabaca bir örnek kalıp verdim. Tabii çalışmıyor. Ancak servislerdeki fonksiyonları ve değişkenlerin kullanılışını bilirsen kolayca sorgulayabilirsin. Bu wsdl yanında uzunca bir de açıklaması olmalı nasıl kullanılacağı hakında. Çok iyi incelemen lazım..
Sevgili varyemez, yardımın için çok teşekkür ederim ancak bi sonuca ulaştıramadım. galiba bi yerlerde bi eksik bi şeyler yapıyorum :(
tinekci yazdı:Arkadaşım,

Eğer xml adresi alıcaksan xml data binding yapıcan Import wsdl değil..

File->New->Other->XML->xml data binding

Schema or xml data file yazan bolume xml in alınacağı web adresini yaz ileri deyip yönergeleri izle..

Sadece wsdl adresleri import wsdl yapılabiliyor..
sevgili tinekci Teşekkürler,

sanırım derdimin dermanından bahsediyorsun.

senden bi ricam olacak;

Delphi 2010 ile, ücretsiz bağlanabileceğimiz bir xml servisi bulmak (epey araştırdım bulamadım, örneğin döviz kurları da olabilir)
bu servise bağlanıp, sorgulama yapıp, boş form'a gelen geğerleri yerleştirmek :)

örnek bi kod yazman mümkün mü?

şimdiden teşekkürler :)
Kullanıcı avatarı
unicorn64
Üye
Mesajlar: 919
Kayıt: 04 Nis 2006 08:56
Konum: yine yeniden Ankara ^_^

Re: Delphi ve XML webservisleri

Mesaj gönderen unicorn64 »

siz verdiğim linke baktınız mı, orada verilen örnek uygulamayı indirip bi baksaydınız keşke...
bazen yükselmek için önce dibi görmek gerekir...

forumda soru sormadan önce bakılmalı bence
daha fazlası için...

yürümeyi öğrenmeden koşmaya çalışanlar için, tökezleyip düşmek kaçınılmazdır...

Resim
Cevapla