Facebook Graph Api Search with asp.net c#

Evet facebook graph api ile beraberinde artık search (arama ) yapabilir durumdayız .

JSON data olarak deri dönüşümü olan graph apinin kullanımı ile ilgili bir kaç örnek okuduktan sonradenemeler yapmaya başlamış durumdayım daha tam net olarak anlamış olamamakla birlikte sonuca yavaş yavaş ulaşabileceğimi umuyorum .

Belki kullanmış olduğum teknik bazılarınaza abes , uzun veya hatalı geliyor olabilir.Ama şu an itibari ile gelen bir data ve listelemesi mevucut . Nasıl yaptığın değil sonuca ulaşıp ulaşmadığının önemli olduğuna inanıyorum . Tabiki kod optimizasyonu yapan dostlarımız bu konuda yardımcı olurlarsa sevinirim.

oncelikle
JSON.cs dosyası lazım olacak bizlere

JSON js = new JSON();


        StringBuilder sb = new StringBuilder();
        byte[] buf = new byte[8192];

        HttpWebRequest request = (HttpWebRequest)
            WebRequest.Create("https://graph.facebook.com/search?q=watermelon&type=post");

        HttpWebResponse response = (HttpWebResponse)
            request.GetResponse();


        Stream resStream = response.GetResponseStream();



        string fbSearch = "";
        string tempString = null;
        int count = 0;

        do
        {
            // datayı buffera yaz 
            count = resStream.Read(buf, 0, buf.Length);

            // okunacak data oldugundan emın ol
            if (count != 0)
            {
             
                tempString = Encoding.ASCII.GetString(buf, 0, count);

             
                sb.Append(tempString);
            }
        }
        while (count > 0); // okumak için data mevcutmu ?

        // eger data varsa stringe ata
        fbSearch += sb.ToString();


        JsonTextParser parser = new JsonTextParser();
  


        Hashtable ht = (Hashtable)JSON.JsonDecode(fbSearch);

        ArrayList keys = GetKeys(ht);

// grid e basmak icin datatable olustur
                        DataTable table = new DataTable("test");
                        table.Columns.Add("key", typeof(string));
                        table.Columns.Add("value", typeof(string));

        foreach (object obj in keys)
        {

            
            if (obj.ToString() == "data")
            {

                ArrayList values = (ArrayList)ht[obj];
                

                foreach (object obji in values)
                {


                    ArrayList keys2 = values;

                    foreach (object obj2 in keys2)
                    {
                        ArrayList valu1 = (ArrayList)keys2;

                        ArrayList o = GetKeys((Hashtable)obj2);
                        ArrayList v = GetValues((Hashtable)obj2);

                        int count1 = o.Count;

                        ArrayList a = new ArrayList();

                        
                            

                        for (int i = 0; i < count1; i++)
                        { 
                            
                            table.Rows.Add(o[i].ToString(),v[i].ToString());
                        
                        }

                        GridView1.DataSource = table;
                        GridView1.DataBind();
               
                    }              

                }

            }

        }





    }


    public static ArrayList GetKeys(Hashtable table)
    {
        return (new ArrayList(table.Keys));
    }

    
    public static ArrayList GetValues(Hashtable table)
    {
        return (new ArrayList(table.Values));
    }


belirttiğim gibi belki taklalar atarak sonuca ulastım ama çok da fena olmadı...
Sonuc olarak cıktı ekranımız

4 Comments

  1. Fatih Samet Çetin 11 Ağustos 2010 Reply
    • Eravse 11 Ağustos 2010 Reply
  2. Fatih Samet Çetin 17 Aralık 2010 Reply
  3. Mehmet 28 Nisan 2012 Reply

Leave a Reply