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...

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 ...

Material Design Nedir?

Material Design nedir, ne işe yarar, işimizi nasıl kolaylaştıracak? Şekil 1 - Material Design UI Örneği Material Design, Google tarafından geliştirilen bir tasarım dilidir. 2014’te I/O konferansında Android 5.0 Lollipop ile beraber duyurulmuştur. Temel olarak, kullanıcılara daha kararlı bir arayüz sağlayabilmeyi amaçlıyor. Yeni gelen bu tasarım standartları ile Android uygulamalarındaki uyuşmazlık, tutarsızlık, dokümantasyon eksikliği gibi konulara bir çözüm getirilmiş oldu. Böylece kullanıcılar, daha tahmin edilebilir bir ortamda oldukları için uygulamalar arası geçişlerde zorlanmayacak,  bir uygulamanın nasıl çalıştığını daha çabuk kavrayabilecek ve daha kolay alışabilecekler. Özellikle farklı ekran boyutlarında uygulama geliştirenlerin yaşadıkları problemleri ortadan kaldıracak ve farklı ekran boyutlarını uyumlu hale getiren akıllı arayüz geliştiricilerinin işini bir hayli kolaylaştıracak. Şekil 2 - Işık ve Gölgelendirme Çalışmaları Materi...