Sayfalar

12 Eylül 2013 Perşembe

C# ile Wolvox SDK Veri Çekme & Google Maps Uygulaması

Evet sevgili dostlarım,

Bugün size c#.net'i kullanarak Wolvox SDK'dan veri çekme ve bu çektiğimiz veriyi Google Maps kullanarak adresi göstermeyi uygulayacağız.

Uygulamada genel olarak Kontrol Paneline bağlanıp güncelleme portu üzerinden bazı verileri XML olarak çekeceğiz ve bu çektiğimiz verileri kullanarak Google Maps üzerinden adres göstereceğiz.

Wolvox SDK hakkındaki gelen bilgiyi ve çalışma mantığınız Bu Linkten İndirebilirsiniz.

Wolvox SDK hakkında genel bilgi için TIKLAYINIZ

Uygulamada yazdığım kodların detayına inmeyeceğim fakat kodları blok blok özetleyeceğim konu hakkındaki sorularınız için site üzerinden benimle irtibata geçebilirsiniz. Uygulamayı Ekrem GÖKTEN abime armağan ediyorum...


Resimde gördüğünüz gibi Wolvox SDK'dan veri çekmek için ilk önce "Bağlan" butonuyla Wolvox Kontrol Paneline bağlanıyoruz."Bilgileri Çek" butonuyla Carideki Ad,Soyad,Adres bilgilerini çekiyoruz ve Açılır Listeye ekliyoruz Açılır listedende seçim yaparak seçtiğimiz listeyi Google Maps üzerinde gösteriyoruz.

Kodlarımız şu şekilde;
Anlatımını yaptığım kod satırlarını KIRMIZI renkle açıklamaları YEŞİL renkte yazdım.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.IO;
using System.Security.Cryptography;
using System.Xml;

namespace WolvoxSDK
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        string pwd;
        private void btn_bilgicek_Click(object sender, EventArgs e)
        {
            //Alttaki kodda sunucudan veri çekmek için göndereceğimiz parametreyi BASE64 le şifreliyoruz.
            string veri = "command=get_carilist&tpwd=" + pwd.ToString() + "&sirketKodu=DEMO_WOLVOX&calismaYili=2013&fieldList=ADI,SOYADI,ADRESI_1";
            byte[] veriByteDizisi = System.Text.ASCIIEncoding.ASCII.GetBytes(veri);
            string sifrelenmisVeri = System.Convert.ToBase64String(veriByteDizisi);

            //Alttaki kodda şifrelediğimiz parametreyle birlikte URL adresimizi sunucuya gönderiyoruz ve 
            //dönen bilgiyi "gelen" adlı değişkene atıyoruz.
            WebRequest istek = HttpWebRequest.Create("http://127.0.0.1:3056/getdata.html?" + sifrelenmisVeri.ToString());
            WebResponse cevap = istek.GetResponse();
            StreamReader donenBilgiler = new StreamReader(cevap.GetResponseStream());
            string gelen = donenBilgiler.ReadToEnd();

            //Dönen veriyi BASE64 ile geri Decode ediyoruz
            byte[] cozByteDizi = System.Convert.FromBase64String(gelen);
            string orjinalVeri = System.Text.Encoding.UTF8.GetString(cozByteDizi);

            //Çektiğimiz veriyi XML dosyasına kaydediyoruz
            string programDizini
=System.IO.Path.GetDirectoryName(System.Windows.Forms.Application.ExecutablePath);
            StreamWriter str = new StreamWriter(programDizini + "\\" + "kula.xml");
            str.Write(orjinalVeri.ToString());
            str.Close();

            //XML dosyasından veriyi okuyup Combobox nesnesine aktarıyoruz.
            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.Load(programDizini.ToString() + "\\kula.xml");

            foreach (XmlNode node in xmlDoc.GetElementsByTagName("row"))
            {
                comboBox1.Items.Add(node["ADI"].InnerText + " " + node["SOYADI"].InnerText + "-" + node["ADRESI_1"].InnerText);
            }
        }

        private void btn_baglan_Click(object sender, EventArgs e)
        {
            //Bağlantı için gerekli olan bilgileri tanımladık
            string ka = "SYSDBA";
            string sifre = "masterkey";
            string sdk_ka = "xxxxx";
            string sdk_pass = "xxxxx";

            //Bağlantı yapabilmemiz için "masterkey" şifresini MD5 ile şifrelememiz gerekiyor.
            MD5CryptoServiceProvider md5anahtar = new MD5CryptoServiceProvider();
            byte[] byteblok = Encoding.UTF8.GetBytes(sifre);
            byteblok = md5anahtar.ComputeHash(byteblok);
            StringBuilder sb = new StringBuilder();
            foreach (byte ba in byteblok)
            {
                sb.Append(ba.ToString("x2").ToLower());
            }

            //Bağlantı yapabilmek için gerekli olan parametreyi BASE64 ile şifreliyoruz.
            string veri = "command=wlogin&username=" + ka.ToString() + "&password=" + sb.ToString() + "&devCode=" + sdk_ka.ToString() + "&devPass=" + sdk_pass.ToString();
            byte[] veriByteDizisi = System.Text.ASCIIEncoding.ASCII.GetBytes(veri);
            string sifrelenmisVeri = System.Convert.ToBase64String(veriByteDizisi);

            //Şifrelemiz olduğumuz veriyi sunucuya gönderiyoruz
            WebRequest istek = HttpWebRequest.Create("http://127.0.0.1:3056/getdata.html?" + sifrelenmisVeri.ToString());
            WebResponse cevap = istek.GetResponse();
            StreamReader donenBilgiler = new StreamReader(cevap.GetResponseStream());
            string gelen = donenBilgiler.ReadToEnd();

            //Gelen veriyi BASE64 ile decode ediyoruz.
            byte[] cozByteDizi = System.Convert.FromBase64String(gelen);
            string orjinalVeri = System.Text.Encoding.UTF8.GetString(cozByteDizi);

            //Bağlantıda başarılı olduysak butonu kitliyoruz.
            string[] veriler = orjinalVeri.Split('&');

            if (veriler[0].ToString() == "1")
            {
                btn_baglan.Text = "Bağlandı";
                btn_baglan.Enabled = false;
                btn_bilgicek.Enabled = true;
                lbl_pwd.Text = lbl_pwd.Text+" "+veriler[1].ToString();
                pwd = veriler[1].ToString();
            }
            else
            {
                btn_baglan.Text = "Bağlanamadı";
            }
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            btn_bilgicek.Enabled = false;
        }

        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            //Comboboxda çektiğimiz veriyi Google Maps haritasında gösteriyoruz.
            string[] veri = comboBox1.SelectedItem.ToString().Split('-');
            pictureBox1.ImageLocation = "http://maps.googleapis.com/maps/api/staticmap?center=" + veri[1].ToString() + "&zoom=13&size=300x300&sensor=true";
        }
    }
}

Evet dostlarım makalenin sonuna geldik proje dosyasını aşağıdaki linkten indirip inceleyebilirsiniz.


Konu hakkındaki sorularınız için site üzerinden irtibata geçebilirsiniz.

Wolvox'la esen kalın...İyi Çalışmalar...:)

2 yorum:

  1. Ellerine saglik mukemmel ötesi olmus.sen mukemmel ve özel bir yeteneksin

    YanıtlaSil
  2. Mehmet bey merhabalar, öncelikle teşekkürler, açıkçası Akınsoft bilgi bankasındaki belgelerden daha detaylı bir açıklama ve örnekleme olmuş. Peki post metodu ile ilgili elinizde paylaşabileceğiniz bir örnek varsa paylaşabilir misiniz? İyi çalışmalar..

    YanıtlaSil