İçeriğe geç
ShiftDelete.Net
Haber ara/ SDN'ye SorGiriş
Haber Akışı SDNTV İnceleme Forum Yapay Zeka Akıllı Telefon Elektrikli Otomobil Oyun ShiftDelete.Net Global Teknoloji Haberleri Mobil Otomobil Donanım Savunma Bilim Sosyal Medya İnternet Giyilebilir Teknoloji Rehber Ürünler Son dakika Yazarlar
  1. Ana sayfa
  2. Topluluk
  3. Programlama
  4. SDN Programlama Kafe
SDN Programlama Kafe

C# - API Kullanımı

Samet UCA11.02.20199 cevap8.509 görüntüleme
2012'den beri3.287 mesaj
#1
ASP.NET üzerinden geliştireceğim bir projede film apisi kullanmak istiyorum. Apiyi sağlayan site OMDb API - The Open Movie Database Sitenin tasarımı ve gelebilecek verilere göre model sınıfı oluşturdum. Ancak bu sitede ki apiyi nasıl kullanabilirim bilmiyorum. Örnek olarak textboxa bir film ismi girilecek ve girilen film ile ilgili bilgilerin diğer kutucuklara gelmesini istiyorum. İnternet üzerinden yapmış olduğum araştırmalarda çok karışık kaynaklara ulaşıp anlamayadım. Yardımcı olabilirseniz çok sevinirim.
Cevaplar
2008'den beri346 mesaj
#3
aradigin sey cok zor bir sey degil hocam, sanirim yanlis kelimelerle arama yaptin. "web service consumer in C#" gibi arama yapsaydin daha net sonuclara ulasabilirdin. Neyse ziyani yok, senin icin basit bir demo yaptim..

Kisaca anlatayim; simdi bu webservice restful bir webservis, yani post, get, put gibi komutlarla islem yapabilirsin. Bize get methodu verdikleri icin biz de get üzerinden gidecegiz. Ancak bize bir tane api key lazim. (ben bi tane demo olusturdum). bunun yaninda cesitli parametreler vermemiz lazim. Restful oldugu icin ve get oldugu icin aslinda url yi browser da calistirabilirsin.. Mesela ben "one piece" filmini aratmak istiyorum

o zaman url im söyle olacak:
http://www.omdbapi.com/?i=tt3896198&apikey=b732dcf2&s=one%20piece&type=movie

s= kismi zorunlu cünkü buradan arayacagin filmi vermen lazim., type kismi zorunlu degil ama ben elemek icin movie yazdim (tüm secenekler movie, series, episode), baska türlü parametreler de var. mesela json degil de xml istiyorsan type=movie&r=xml yazabilirsin..

Simdi sonuca göre iki tane model olusturdum.

FilmInfo classim
 
     public class FilmInfo
    {
      
        public string Title {get;set;}

        public string Year{ get; set; }

        public string ImdbID{ get; set; }

        public string Type{ get; set; }

        public string Poster{ get; set; }
    }


Bu da benim searchmodel classim

    
    public class SearchModel
    {
        public List<FilmInfo> Search {get; set;}
    
        public int TotalResults { get; set; }

        public bool Response { get; set; }
    }


Bu da benim consumer kodum (console da yaptim ancak basitce asp.net e cevirebilirsin, zaten yazdim bi kac sey)

 
using System.Net;
using Newtonsoft.Json;

namespace WebApiConsumer
{ 
    class Program
    {
        static void Main(string[] args)
        {
           var result=  GetReleases("http://www.omdbapi.com/?i=tt3896198&apikey=b732dcf2&s=one%20piece&type=movie");
            SearchModel  model = JsonConvert.DeserializeObject<SearchModel>(result);
        }

        public static string GetReleases(string url)
        {
            var client = new WebClient();
            // client.Headers.Add(RequestConstants.UserAgent, RequestConstants.UserAgentValue);  // <<=asp.net ile yapacagin zaman bunu kullan
            client.Headers.Add("user-agent", "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36");

            var response = client.DownloadString(url);

            return response;
        }
     }  
}


Gördügün gibi json deserialize islemi yaptim, bunun icin de Newtonsoft.Json kütüphanesini kullandim. nuget package manager den indirirsin..

model objesi, bana film sayisini ve tüm film bilgilerini (model'deki search objesinde) verecek.
örnek:

Screen Shot 2019-02-12 at 00.52.40.png

umarim faydali olur,
ertan
👍 1
Samet UCA Konuyu açan
2012'den beri3.287 mesaj
#4
aradigin sey cok zor bir sey degil hocam, sanirim yanlis kelimelerle arama yaptin. "web service consumer in C#" gibi arama yapsaydin daha net sonuclara ulasabilirdin. Neyse ziyani yok, senin icin basit bir demo yaptim..

Kisaca anlatayim; simdi bu webservice restful bir webservis, yani post, get, put gibi komutlarla islem yapabilirsin. Bize get methodu verdikleri icin biz de get üzerinden gidecegiz. Ancak bize bir tane api key lazim. (ben bi tane demo olusturdum). bunun yaninda cesitli parametreler vermemiz lazim. Restful oldugu icin ve get oldugu icin aslinda url yi browser da calistirabilirsin.. Mesela ben "one piece" filmini aratmak istiyorum

o zaman url im söyle olacak:
http://www.omdbapi.com/?i=tt3896198&apikey=b732dcf2&s=one piece&type=movie

s= kismi zorunlu cünkü buradan arayacagin filmi vermen lazim., type kismi zorunlu degil ama ben elemek icin movie yazdim (tüm secenekler movie, series, episode), baska türlü parametreler de var. mesela json degil de xml istiyorsan type=movie&r=xml yazabilirsin..

Simdi sonuca göre iki tane model olusturdum.

FilmInfo classim

     public class FilmInfo
    {
     
        public string Title {get;set;}

        public string Year{ get; set; }

        public string ImdbID{ get; set; }

        public string Type{ get; set; }

        public string Poster{ get; set; }
    }


Bu da benim searchmodel classim

   
    public class SearchModel
    {
        public List<FilmInfo> Search {get; set;}
   
        public int TotalResults { get; set; }

        public bool Response { get; set; }
    }


Bu da benim consumer kodum (console da yaptim ancak basitce asp.net e cevirebilirsin, zaten yazdim bi kac sey)


using System.Net;
using Newtonsoft.Json;

namespace WebApiConsumer
{
    class Program
    {
        static void Main(string[] args)
        {
           var result=  GetReleases("http://www.omdbapi.com/?i=tt3896198&apikey=b732dcf2&s=one%20piece&type=movie");
            SearchModel  model = JsonConvert.DeserializeObject<SearchModel>(result);
        }

        public static string GetReleases(string url)
        {
            var client = new WebClient();
            // client.Headers.Add(RequestConstants.UserAgent, RequestConstants.UserAgentValue);  // <<=asp.net ile yapacagin zaman bunu kullan
            client.Headers.Add("user-agent", "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36");

            var response = client.DownloadString(url);

            return response;
        }
     } 
}


Gördügün gibi json deserialize islemi yaptim, bunun icin de Newtonsoft.Json kütüphanesini kullandim. nuget package manager den indirirsin..

model objesi, bana film sayisini ve tüm film bilgilerini (model'deki search objesinde) verecek.
örnek:



umarim faydali olur,
ertan
Çok teşekkür ederim. Bu anlatım işime yaradı.
2008'den beri346 mesaj
#5
Çok teşekkür ederim. Bu anlatım işime yaradı.
Rica ederim. Simdi farkettim. Linkte i=tt3896198 gibi bir ifade kalmis (kopyalarken). Onu silebilirsin. Oraya istersen imdb idsi verebilirsin yani söyle kullanabilirsin

http://www.omdbapi.com/?i=tt3896198&apikey=b732dcf2

2019-02-12 10_59_17-Mozilla Firefox.png

gördügün gibi verdigin id den dönen cevaplar daha fazla. Yani bir filmden daha fazla detay almak icin kullanabilirsin.
Kolay gelsin
👍 1düzenlendi
Samet UCA Konuyu açan
2012'den beri3.287 mesaj
#6
Rica ederim. Simdi farkettim. Linkte i=tt3896198 gibi bir ifade kalmis (kopyalarken). Onu silebilirsin. Oraya istersen imdb idsi verebilirsin yani söyle kullanabilirsin

http://www.omdbapi.com/?i=tt3896198&apikey=b732dcf2



gördügün gibi verdigin id den dönen cevaplar daha fazla. Yani bir filmden daha fazla detay almak icin kullanabilirsin.
Kolay gelsin
Hocam son bir soru olarak posteri nasıl çekebiliriz bir pictureboxa?
2008'den beri346 mesaj
#7
Isteyim hocam pek bakamiyorum.

Su sekil yapabilirsin (mvc icin)

<img src="@Html.Raw(model[0].ImageUrl)" alt="info"> (model[0] calisir mi emin degilim)

diger türlü söyle yapabilirsin

WebClient webClient = new WebClient();
webClient.DownloadFile(model[0].Poster, "file.jpg");

daha sonra resmi base64 e cevirip asagidaki gibi gösterebilirsin web form icin

img.ImageUrl = "data:image/jpg;base64," + base64String
👍 1
Samet UCA Konuyu açan
2012'den beri3.287 mesaj
#8
Isteyim hocam pek bakamiyorum.

Su sekil yapabilirsin (mvc icin)

<img src="@Html.Raw(model[0].ImageUrl)" alt="info"> (model[0] calisir mi emin degilim)

diger türlü söyle yapabilirsin

WebClient webClient = new WebClient();
webClient.DownloadFile(model[0].Poster, "file.jpg");

daha sonra resmi base64 e cevirip asagidaki gibi gösterebilirsin web form icin

img.ImageUrl = "data:image/jpg;base64," + base64String
Teşekkür ederim hocam uğraşınız için
Samet UCA Konuyu açan
2012'den beri3.287 mesaj
#9
Biraz değişiklikler yaparak ve lazım olan eklemeleri tamamladığımda projem çalışır hale geldi.
Bundan sonra jquery ve ajax üzerinden aynı projeyi geliştirmeye çalışacağım.

ss.png
2012'den beri622 mesaj
#10
Bak sana tavsiyem json2csharp.com mu ne vardı ondan da yararlan son yapısını sana class dönüştürüyor zaten gerisi webclient + methodlara kalıyor

ayrıca online son editör ve onuda arada kullanabilirsin.
👍 1

Cevabını yaz

Cevap yazmak için giriş yap ya da üye ol. Eski forum kullanıcı adın ve parolanla girebilirsin.