XML Web Servisleri I – Web Servisleri ile DataSet Döndürmek

Web servislerle ilgili internete birçok doküman bulabilirsiniz. Web servis sudur, su ise yarar, söyle çalisir gibi bilgiler vermeden direk olarak bir web servis nasil olusturuluru konusacagiz.  Aldigi parametreye göre veritabanindan sorgu yaparak sonucu geri döndüren basit bir web servis metodu olusturacagiz. Hadi baslayalim.

Projeyi Buradan Indirebilirsiniz.

Visual Studio 2008 de New Project -> Visual C# -> Web menusu altindan ASP.NET Web Service Application seçenegini seçerek devam edelim.

 .

                Yukaridaki ekranda Ok butonuna bastiginiz zaman web servisiniz otomatik olarak olusturulacak. Visual Studio web servisimizin çalismasi için gerekli asagidaki kodlari olusturacak.

namespace WebServiceBaslangic

{

    /// <summary>

    /// Summary description for Service1

    /// </summary>

    [WebService(Namespace = "http://tempuri.org/")]

    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]

    [ToolboxItem(false)]

    // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line.

    // [System.Web.Script.Services.ScriptService]

    public class Service1 : System.Web.Services.WebService

    {

 

        [WebMethod]

        public string HelloWorld()

        {

            return "Hello World";

        }

    }

}

Kod içinde [WebService(Namespace = "http://tempuri.org/")] kismini [WebService(Namespace = "http://yazilimmutfagi.com/")] olarak degistirelim.  Yukaridaki kodu inceleyecek olursak HelloWorld adinda bir metot olusturulmus ve çagirildigi durumda “Hello World” string degerini döndürmekle görevli. Burada dikkat edilmesi gereken [WebMethod] kismi. Eger web servisinize yazdiginiz fonksiyona disaridan erisilmesini istiyorsaniz [WebMethod] etiketini metot isminin hemen üstüne koymak zorundasiniz.  

Gelelim kendi web metodumuzu yazmaya. Yazacagimzi metod aldigi parametre ile veritabaninda sorgu çalistirarak veritabanindan dönen verileri metodu çagiran istemciye gönderecek. Bunun için ilk olarak kullanacagimiz veritabani tablomuzu olusturalim. Ben örnegimizde Kisi adinda bir tablo kullanacagim. Tablomuzun scripti asagidaki gibidir.

.

CREATE TABLE [dbo].[Kisi](

      [No] [int] IDENTITY(1,1) NOT NULL,

      [Ad] [varchar](50) NULL,

      [Soyad] [varchar](50) NULL,

      [TCKimlikNo] [char](11) NULL,

      [Numara] [int] NULL,

      [Cinsiyet] [char](1) NULL,

      [DogumYeri] [varchar](50) NULL,

)

                Olusturdugunuz tabloya kendi istediginiz verileri girin. Daha sonra web servisimizi kod kismini açarak asagidaki kodlari ekleyin.

 

[WebMethod]

public DataSet KisiDondur(string ad)

{

    string query = String.Format("SELECT * FROM Kisi WHERE Ad = ‘{0}’",ad);

    return SorguCalistir(query);

}

 

[WebMethod]

public DataSet KisiDondurTCKimlikNoIle(string tcKimlikNo)

{

    string query = String.Format("SELECT * FROM Kisi WHERE TCKimlikNo = ‘{0}’", tcKimlikNo);

    return SorguCalistir(query);

}

 

public DataSet SorguCalistir(string query)

{

    SqlConnection con = new SqlConnection("Data Source=.;Initial Catalog=Ornek;Integrated Security=True");

    con.Open();

    SqlDataAdapter da = new SqlDataAdapter(query, con);

    da.SelectCommand.ExecuteNonQuery();

    DataSet dt = new DataSet();

    da.Fill(dt);

    return dt;

}

     

     

Yukarida gördügünüz gibi KisiBilgilerini Donduren iki fonksiyon tanimladik ve tanimlamalarinin hemen üstüne [WebMethod] ekledik. Ama SorguCalistir adiyla tanimladigimiz fonksiyona [WebMethod] eklemedik. Çünkü bu fonksiya disardan erisilmesini istemiyoruz. Web Servisimizi çalistirarak sonuçlara bakalim ve makalemizi sonlandiralim.

 

 

 

 

 

 

 

 

 

Yukarida görüldügü gibi [WebMethod] ekledigimiz tüm fonksiyonlarimiz listelendi. Bunlardan KisiDondur linkini tiklayarak devam edelim. 

               

         Ad kismina Metin yazarak Çagir dedigimizde Metin adli bir kisi tablomuzda var ise Metine ait tüm bilgiler asagida görüldügü gibi XML formatinda bize dönecektir.

<DataSet>

 

  <xs:schema id="NewDataSet">

   

    <xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">

     

      <xs:complexType>

       

        <xs:choice minOccurs="0" maxOccurs="unbounded">

         

          <xs:element name="Table">

           

            <xs:complexType>

             

              <xs:sequence>

                <xs:element name="No" type="xs:int" minOccurs="0"/>

                <xs:element name="Ad" type="xs:string" minOccurs="0"/>

                <xs:element name="Soyad" type="xs:string" minOccurs="0"/>

                <xs:element name="TCKimlikNo" type="xs:string" minOccurs="0"/>

                <xs:element name="Numara" type="xs:int" minOccurs="0"/>

                <xs:element name="Cinsiyet" type="xs:string" minOccurs="0"/>

                <xs:element name="DogumYeri" type="xs:string" minOccurs="0"/>

              </xs:sequence>

            </xs:complexType>

          </xs:element>

        </xs:choice>

      </xs:complexType>

    </xs:element>

  </xs:schema>

 

  <diffgr:diffgram>

   

    <NewDataSet>

     

      <Table diffgr:id="Table1" msdata:rowOrder="0">

        <No>2</No>

        <Ad>Metin</Ad>

        <Soyad>Tosun</Soyad>

        <TCKimlikNo>76543244233</TCKimlikNo>

        <Numara>124</Numara>

        <Cinsiyet>E</Cinsiyet>

        <DogumYeri>Ankara</DogumYeri>

      </Table>

    </NewDataSet>

  </diffgr:diffgram>

</DataSet>

Olusturdugumuz bir web servisi baska bir projeden nasil çagiracagimiz hakkinda bilgiyi sonraki makalelerimizde vermeye çalisacagiz.

24 thoughts on “XML Web Servisleri I – Web Servisleri ile DataSet Döndürmek

  1. Merhaba hocam,
    Tapu kadastronun web servis sayfasyndan tapu bilgilerini çekmek istiyorum. A?a?ydaki gibi kod yazdym ve ilgetir() metodunu ComboBox datasource’una atyyorum. Programy çaly?tyrynca combobox’sa 81 adet “TapuKadastro.TapuTest.Il” yükleniyor. Yl adlaryny çekemedim. Nereyi yanly? yapmy? olabilirim.
                TapuTest.DemoWebServiceSoapClient Test = new   TapuTest.DemoWebServiceSoapClient();
                //XmlDocument doc = new XmlDocument();          
                TapuTest.OturumBilgisiDemo oturum = new TapuTest.OturumBilgisiDemo();
                oturum.KullaniciAd = “DemoUser”;
                oturum.Sifre = “54321+pl”;
                //?ehirleri yükle
                cmbIl.DataSource = Test.IlGetir(OturumBilgisiDemo: oturum); 
  2. ders cok guzel tesekkurler peki burada yaratilan veritabani bilgisi nedir onu anlayamadim. ben aynisini yaptim veritabanini access de yapabilirmiyim

  3. Web servislerlere yeni baslamis biri olarak bu makale cuk oturdu. Tasekkürler, elinize emeginize saglik.

  4. Merhaba peki bunu kullanarak sayfamiza verileri nasil çagirabiliriz bi ornek yapabilirmisiniz.. lütfen Acil

  5. Güzel bi makale ellerinize saglik.Diger makalelerinizde de baska projelerden gönderilen  verileri nasil karsilayacagimiz konusunda kapsamli bi makale yazabilirseniz çok memnun oluruz.Örnegin biri Select çekmis ,gelen verileri web servisle Paylasmis biz bunlari karsilayip nasil kendi database imize insert yapabiliriz.

    Emeginize Saglik, 

  6. Güzel paylasim, bende bir holiday sitesi yapiyorum da acaba baska bir siteden bilgileri web servisle çeksem, google açisindan sorun olur mu?

    Tskler.

  7. tesekkür ederiz. Web servisleriyle ugrasmaya baslayan biri için(yani ben) süper bir makale.

  8. Merhaba Yakup,

    güzel yorumun için tesekkür ederim.

    yayinlanmayan alan derken neden bahsettigini anlayamadim. yorum eklerken eposta alinmasindanmi ?

  9.  arkadaslar ben bir programlama ve veritabani modellemeci olarak gerçekten kodu inceledim süper bence tek denemede çalisabilen kaynak herkese tavsiye ederim

     

    ancak

    sitenin admin/admin lerine bir ricam olacak

     

     

    yayinlanmayacak ollan bir field ( ALAN )  neden koyuyorlar anlamis degilim onun için bunun bir an önce kaldirilmasi  taraftariyim

  10. tesekürler böyle çalismanizdan dolayi insallah sonu gelir basariniz dahada artar öptüm kokladim

  11. Merhaba;

    Makaleyi yazali bayagi süre geçmis ama benim web servis hakkinda birseyler danismam gerekiyor acaba bana yardimci olabilirmisiniz bu konuda?

  12. yorumunuz için tesekkür ederim. Vakit bulabildikçe faydali bilgiler yazmaya çalisiyorum. Bilgisini paylasmak isteyen arkadaslardan da yardim bekleriz

  13. çok güzel bir anlatim ve çalisan kodlar…
    emeginize saglik,web servislerle ilgili buldugum en iyi kaynak diyebilirim…

  14. çok hos bir makale ,tskler.wsdl i nasil olusuyor ve baska projeden nasil çagriliyor bunlarida sabirsizlikla bekliyoruz…

mskunt için bir cevap yazın Cevabı iptal et

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir