Ana içeriğe atla

XML & JSON Web Servis'ten Veri Alma

Bir önceki makalemizde "XML & JSON Web Servis Hazırlama" konusunu incelemiştik. Bu makalemizde hazırladığımız servisi kullanarak veri alma işlemini örneklerle inceleceğiz. Bu işlem için öncelikle bir Console uygulaması hazırlayalım ve daha önce oluşturuduğumuz servisi bu proje içine referans olarak ekleyelim. 
Visual Studio içerisinde :

[VB]

“File > New > Project > Visual Basic > Windows > Console Application” 

[C#]

“File > New > Project > Visual C# > Windows > Console Application” 

seçimi ile uygulamamızı hazırlayalım. 

Daha sonra ise proje üzerinde References üzerinde sağ tık ile açılan menüden "Add Service Reference" ile bir önceki makalede hazırladığımız servisimizi ekleyelim.Daha önce hazırladığımız servisimizi localhost üzerinde çalıştırıp web servis adresini aldıktan sonra servis referansa ”http://localhost:58079/JSONandXML.asmx?wsdl” olarak ekliyoruz ve servis referans adı olarak da JSONandXML değerini veriyoruz. Daha sonra yine references alanında yine sağ tık ile "Add Reference" diyoruz ve JSON web servisi parse edebilmek için gerekli olan "System.Web.Extensions.dll" ini ekliyoruz. Artık programımızda servislerden veri alacak kodlarımızı yazmaya başlayabiliriz. İlk olarak JSON parse işelminde ihtiyacımız olan "Member" sınıfımızı oluşturalım.


[Member.vb]

Public Class Member

    Private m_Id As Integer
    Public Property Id() As Integer
        Get
            Return m_Id
        End Get
        Set
            m_Id = Value
        End Set
    End Property

    Private m_Name As String
    Public Property Name() As String
        Get
            Return m_Name
        End Get
        Set
            m_Name = Value
        End Set
    End Property

    Private m_Salary As Integer
    Public Property Salary() As Integer
        Get
            Return m_Salary
        End Get
        Set
            m_Salary = Value
        End Set
    End Property

    Private m_Position As String
    Public Property Position() As String
        Get
            Return m_Position
        End Get
        Set
            m_Position = Value
        End Set
    End Property

End Class

[Member.cs]

namespace CallJSONandXMLCs
{
    public class Member
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public int Salary { get; set; }
        public string Position { get; set; }
    }
}

Member sınıfımız hazır olduğuna göre artık kodlarımızı tamamlayabiliriz.

[Program.vb]

Imports System.Web.Script.Serialization

Module Program

    Sub Main()

        Dim xmlClient As JSONandXML.JSONandXMLSoapClient = New                     JSONandXML.JSONandXMLSoapClient
        Dim teamFromXML = xmlClient.GetTeamFromXML
        Console.WriteLine("XML'den gelen sonuçlar:")
        For Each item In teamFromXML
            Console.WriteLine(item.Id & " " & item.Name & " " & item.Position & " " & item.Salary)
        Next
        Console.WriteLine()

        Dim jsonClient As JSONandXML.JSONandXMLSoapClient = New JSONandXML.JSONandXMLSoapClient
        Dim teamFromJSON = jsonClient.GetTeamFromJSON
        Dim jss As JavaScriptSerializer = New JavaScriptSerializer
        Dim members As List(Of Member) = New List(Of Member)
        members = jss.Deserialize(Of List(Of Member))(teamFromJSON)
        Console.WriteLine("JSON'dan gelen sonuçlar:")
        For Each item In members
            Console.WriteLine(item.Id & " " & item.Name & " " & item.Position & " " & item.Salary)
        Next
        Console.ReadKey()

    End Sub

End Module

[Program.cs]

using System;
using System.Collections.Generic;
using System.Web.Script.Serialization;

namespace CallJSONandXMLCs
{
    class Program
    {
        static void Main(string[] args)
        {
            JSONandXML.JSONandXMLSoapClient xmlClient = new JSONandXML.JSONandXMLSoapClient();
            var teamFromXML = xmlClient.GetTeamFromXML();
            Console.WriteLine("XML'den gelen sonuçlar:");
            foreach (var item in teamFromXML)
            {
                Console.WriteLine(item.Id + " " + item.Name + " " + item.Position + " " + item.Salary);
            }
            Console.WriteLine();

            JSONandXML.JSONandXMLSoapClient jsonClient = new JSONandXML.JSONandXMLSoapClient();
            var teamFromJSON = jsonClient.GetTeamFromJSON();
            JavaScriptSerializer jss = new JavaScriptSerializer();
            List<Member> members = new List<Member>();
            members = jss.Deserialize<List<Member>>(teamFromJSON);
            Console.WriteLine("JSON'dan gelen sonuçlar:");
            foreach (var item in members)
            {
                Console.WriteLine(item.Id + " " + item.Name + " " + item.Position + " " + item.Salary);
            }
            Console.ReadKey();
        }
    }
}

Yukarıdaki kodlarda da görüldüğü gibi hem XML’den hemde JSON’dan gelen sonuçları çıktı olarak console üzerine yazdırık. Kodlarda özellikle farklı client oluşturdum xmlClient ve jsonClient şekilinde , bu sebeple iki servis için yazılan kodları ayrı ayrı okumak kolay ve anlaşılır olabilir. 

Yukarıdaki kodlar çalıştığında çıktı aşağıdaki gibi olacaktır.

XML'den gelen sonuçlar:
1 Samet Software Specialist 10000
2 Kubilay Software Specialist 10000
3 Erkan Software Specialist 10000

JSON'dan gelen sonuçlar:
1 Samet Software Specialist 10000
2 Kubilay Software Specialist 10000
3 Erkan Software Specialist 10000

Samet ÇELİKBIÇAK

Yorumlar

Bu blogdaki popüler yayınlar

UML ve Modelleme – Bölüm 4 (Class (Sınıf) Diyagramları)

Bir önceki makalemizde UML modellemede kullanılan ilk diyagram olan Use Case diyagramını incelemiştik. Bu makalemizde nesne tabanlı programlamada kullanılan sınıflar ve sınıfların arasındaki ilişkileri modelleyebileceğimiz diyagramlar olan Class(Sınıf) diyagramlarını inceleyeceğiz. UML’de sınıflar, nesne tabanlı programlama mantığı ile tasarlanmıştır. Sınıf diyagramının amacı bir model içerisinde sınıfların tasvir edilmesidir. Nesne tabanlı uygulamada, sınıfların kendi özellikleri (üye değişkenler), işlevleri (üye fonksiyonlar) ve diğer sınıflarla ilişkileri bulunmaktadır. UML’de sınıf diyagramlarının genel gösterimi aşağıdaki gibidir. Şekil 1. Class Diyagram Şekil1’de görüldüğü üzere bir dikdörtgeni 3 parçaya bölüyoruz. En üst bölüm sınıf adını, orta kısım özellik listesini (üye değişkenler) ve en son kısım, işlev listesini (üye fonksiyonlar) göstermektedir. Çoğu diyagramlarda alt iki bölüm çıkarılır. Genelde tüm özellik ve işlevler gösterilmemektedir. Ama

Yazılım Maliyet Tahmineleme Tecrübeleri

Yazılım mühendisliğinde maliyet hesabı her zaman problem olmuştur. "Bu iş kaç Adam/Gün tutar?" sorusuyla sıkça karşılaşıyoruz. Adam/gün veya Adam/ay ölçütleri bir kaynağın/kişinin belirtilen zaman dilimindeki iş gücü anlamına gelir. Tabi bu noktada yine kafa karışıklıkları başlar. 6 A/G'lik bir işi hızlandıralım diye 2 kişi ile yapmaya çalışsak ve kaynak/kod, modül, altyapı, insan vb. her bir şeyi bir kenara bıraksak, matematiksel basit formülle 6/2=3 A/G'de biter? Gerçek hayat böyle değil, öncelikle bunu anlamamız lazım. Hep şu örnek verilir; "Aynı bebeği 2 kadın birlikte daha kısa sürede doğurur mu?" Eğer bunun cevabı "Evet" ise (veya bir gün böyle bir durum ortaya çıkarsa), yazımı değiştirmem gerekecek:) Mevzu gerçekten derin...Maliyet hesabı; bulunduğunuz firmanın yazılım süreçlerini hangi methodlarla uyguladığına, ilgili işin o dönemdeki aciliyetine, (şirket yönetiminin baskısına:)) vb. bir çok duruma bağlı olabilir. Örneğin; bizim firmada e

UML ve Modelleme – Bölüm 3 (Use Case Diyagramlar)

Önceki iki makalemizde ( 1 , 2 ) UML’e genel olarak değinip ve modellemede kullanacağımız dokuz diyagram hakkında bilgiler vermiştik. Bu makalemizde Use Case diyagramından detaylı bahsedeceğiz. Öncelikle, genel Use case diyagramının tanımını hatırlayalım. “Bir kullanıcı ve bir sistem arasındaki etkileşimi anlatan senaryo topluluğudur.” Ivar Jacobson Senaryo tanımı için der ki: “Aktörle sistem arasında gerçekleştirilen, sonucunda aktöre farkedilir getirisi/ faydası oluşan etkileşimli diyalogdur. ” UML Use Case Diyagramları  sistemin işlevselliğini açıklamak amacıyla kullanılır. Sistemin birbirinden ayrı özelliklerinin detaylarını göstermekten ziyade, Use Case Diyagramlar, tüm mevcut işlevselliği göstermek için kullanılabilir. Buradaki en önemli noktalardan biri,   Use Case Diyagramlar temelde sequence diyagram ve akış diyagramlarından farklıdır. Use Case diyagramlar dört ana elemandan oluşmaktadır. Aktörler , Sistem (Proje kapsamını belirtir) , Use Caseler ve bunlar ara