Programsal Olarak Bir ASP.Net Sayfasına Veri Göndermek

Kimi zaman yazmış olduğunuz bir web sitesini test etmek isteyebilirsiniz. Bu testin amacı sayfanın beklenildiği gibi çalıştığını otomatik olarak doğrulamak olabileceği gibi, web sitenizi bir yük testine tabii tutarak gerçek ortamda kaldırabileceği yükü görmek de olabilir. Bu makalemde sizlerle asp.net ile yazılmış bir web sitesine C# ile nasıl veri gönderilebileceğini ve test edilebileceğini paylaşacağım.

HTTP protokolü üzerinden bir web sayfasına HEAD, GET, POST, PUT, DELETE, TRACE, OPTIONS, CONNECT, PATCH yöntemleri kullanılarak veri gönderilebilir. Bu yöntemler arasında en sık tercih edilenler ise GET ve POST’tur. Standart bir asp.net web sayfası, form verilerini bu yöntemlerden POST’u kullanarak göndermektedir.

HTTP POST metodunda veri sunucuya isteğin bir parçası olarak iletilmektedir.Verinin sadece URL’nin bir parçası olarak iletildiği GET metodundan farklı olarak POST metodunda istek içerisinde mesaj vucudu (message body) da yer almaktadır; ki bu da değişken bir boyutta ve formattaki verinin kolaylıkla sunucuya iletilebilmesine olanak sağlamaktadır.

Web sayfası içerisinden yapılan standart bir POST isteği genellikle “application/x-www-form-urlencoded” içerik türüne sahiptir ve gönderilen her bir anahtar-değer ikilisi birbirinden “&” karakteri ile ayrılmaktadır. Anahtar ve değer arasında ise “=” karakteri yer almaktadır. Gönderilen veri içerisindeki boşluklar “+” karakteri ile yer değiştirdikten sonra da kalan diğer karakterlere URL encoding uygulanır.

Anahtar Değer
Adi Ali Veli
Soyadi Örnek
Sehir İzmir
Ulke Türkiye

Yukarıdaki örnek anahtar-değer ikilileri için oluşturulacak olan POST istek içeriğini aşağıda bulabilirsiniz;

 

Adi=Ali+Veli&Soyadi=%c3%96rnek&Sehir=%c4%b0zmir&Ulke=T%c3%bcrkiye

Görüldüğü gibi Türkçe karakterler de encode edilerek POST içeriğine eklenmiş durumda.

Pek çok web sayfasına C# kullanarak otomatik veri göndermek aslında kolay bir iştir; HttpWebRequest sınıfı vasıtasıyla bir istek oluşturarak ve sayfanın adresini vererek göndermeniz yeterli olmakta. Temelde ASP.Net sayfalarına veri gönderimi de aynı yolu izliyor olmasına karşın başarılı bir gönderim için bilmeniz gereken ufak bir kaç püf noktası bulunmakta.

ASP.Net web formunun geri bildirimlerde (PostBack) kontrollerin durumunu koruyabilmek/takip edebilmek adına view state yöntemini kullanmaktadır. Kontrollarin geri bildirimlerde hatırlanması istenen özellikleri form içerisinde gizli bir değişkende saklanmaktadır. Her geri bildirim de bu değişken değeri asp.net tarafından okunarak kontrollerin durumları yeniden ayarlanır. Form içerisinde view state’i tutan bu gizli olarak konumlanmış olan değişkeninin adı ise  __VIEWSTATE’tir. Programsal olarak yapılacak bir form gönderiminde form içerisindeki alanlara ait değerleri göndermenin yanı sıra bu değişkeninde gönderilmesi gerekmektedir; aksi takdirde gönderimimiz başarısız olacaktır.

Yukarıdaki bilgiler ışığında, bir asp.net web sayfasına programsal olarak veri gönderebilmek için öncelikle sayfanın url’si ile birlikte bir HttpWebRequest oluşturmalıyız;

var webRequest = (HttpWebRequest)WebRequest.Create("[WEB SAYFASININ ADRESI]");

Web request’im method olarak HTTP POST’u kullanmalı;

webRequest.Method = "POST";

İçerik türü olarak application/x-www-form-urlencoded kullanılmalı;

webRequest.ContentType = "application/x-www-form-urlencoded";

Göndermek istediğiniz string formatındaki veriyi byte dizisi haline çevirmelisiniz;

var tampon = Encoding.UTF8.GetBytes("[GÖNDERİLECEK İÇERİK]");

Göndereceğimiz içeriğin boyutu belirtilmeli;

webRequest.ContentLength = tampon.Length;

Son olarak da veri istek stream’i içerisine yazılmalı ve yanıt okunmalıdır;

using (var istekStream = webRequest.GetRequestStream()) {
   istekStream.Write(tampon, 0, tampon.Length);
}

var yanit = (HttpWebResponse)webRequest.GetResponse();

var yanitIcerigi = string.Empty;
using (var responseStream = yanit.GetResponseStream()) {
   var streamReader = new StreamReader(responseStream);
   yanitIcerigi = streamReader.ReadToEnd();
}

Tüm kodu bir araya toparlayacak olursak;

var tampon = Encoding.UTF8.GetBytes(gonderilecekVeri);
var webRequest = (HttpWebRequest)WebRequest.Create("[WEB SAYFASININ ADRESI]");

webRequest.Method = "POST";
webRequest.ContentType = "application/x-www-form-urlencoded";
webRequest.ContentLength = tampon.Length;
webRequest.Proxy = new WebProxy((string)null, true);

using (var istekStream = webRequest.GetRequestStream()) {
   istekStream.Write(tampon, 0, tampon.Length);
}

var yanit = (HttpWebResponse)webRequest.GetResponse();

var yanitIcerigi = string.Empty;
using (var responseStream = yanit.GetResponseStream()) {
   var streamReader = new StreamReader(responseStream);
   yanitIcerigi = streamReader.ReadToEnd();
}

Buraya kadar anlattıklarım işin kolay kısmıydı aslına bakarsanız; bu yöntemle herhangi bir web sayfasına HTTP POST metodu ile veri gönderebilirsiniz; fakat asp.net sayfalarına göndereceğiniz veri içerisinde view state’de yer almalıdır. Rastgelen oluşturacağınız bir view state değerinin işinizi hiç bir şekilde çözmeyeceğini baştan söylemeliyim. Peki bu durumda view state değeri nasıl oluşturabilirim? Bu sorunun yanıtı aslında basit; view state değerini siz oluşturmayacaksınız.

Web tarayıcınız üzerinden dolaştığınız, formlarını doldurduğunuz bir asp.net sayfasını düşünün. Böyle bir sayfada ilk isteğinizle birlikte bir view state değeri oluşturularak form içerisindeki gizli __VIEWSTATE alanına değer olarak atanır, siz sayfadaki kontrollerin değerlerini değiştirdikçe, formları gönderdikçe bu gizli alan da gideceği için asp.net hatasız şekilde view state’i yönetecektir.

Programsal olarak bir asp.net sayfasına veri bildirimi yapmak istiyorsak, yapmamız gereken de aslında tam olarak yukarıda örneklediğim web tarayıcısı davranışı taklit etmektir. İlk önce bir istek yaparak sayfanın ve view state’in oluşmasını sağlamalı, ardından bu değerleri kullanarak form’u doldurup göndermeliyiz.

private string IlkIstek(string sayfaAdresi) {
   var webClient = new WebClient();

   using (var stream = webClient.OpenRead(sayfaAdresi)) {
      var streamReader = new StreamReader(stream);

      return streamReader.ReadToEnd();
   }
}

IlkIstek metodu bizim için verdiğimiz bir adrese istek yaparak gelen yanıtı iletmekte. Aşağıdaki AlanDegeriniBul metodu kullanılarak bu yanıt içerisindeki istenen herhangi bir input alanı değeri alınabilir.

private string AlanDegeriniBul(string sayfaIcerigi, string alanAdi) {
   var pattern = "<input.*id=\"" + alanAdi + "\".*value=\"(?<deger>.*?)\".*/>";

   var regex = new Regex(pattern, RegexOptions.IgnoreCase);
   var match = regex.Match(sayfaIcerigi);

   if (match != null && match.Groups["deger"].Success && match.Groups.Count > 0) {
      return match.Groups["deger"].Value;
   }

   return string.Empty;
}

AlanDegeriniBul metodu verilen alan adının değerini bulmak için sayfa içeriğinde bir düzenli ifade araması yapmaktadır. Verilen ifadeye uygun bir grup bulunması durumunda değer dönmekte, aksi durumlarda ise boş bir string dönmektedir.

IlkIstek ve AlanDegeriniBul metodlarının aşağıdaki şekilde kullanılması sonucunda ihtiyacımız olan view state değerine ulaşmış olacağız.

var ilkSayfaIcerigi = IlkIstek("[WEB SAYFASININ ADRESI]");
var viewState = AlanDegeriniBul(ilkSayfaIcerigi, "__VIEWSTATE");

Elde ettiğimiz bu view state değerini de önceki alanların sonuna ekleyerek isteğimizi gerçekleştirebiliriz.

var ilkSayfaIcerigi = IlkIstek("[WEB SAYFASININ ADRESI]");
var viewState = AlanDegeriniBul(ilkSayfaIcerigi, "__VIEWSTATE");

var tampon = Encoding.UTF8.GetBytes(gonderilecekVeri + "&__VIEWSTATE=" + HttpUtility.UrlEncode(viewState));
var webRequest = (HttpWebRequest)WebRequest.Create("[WEB SAYFASININ ADRESI]");

webRequest.Method = "POST";
webRequest.ContentType = "application/x-www-form-urlencoded";
webRequest.ContentLength = tampon.Length;
webRequest.Proxy = new WebProxy((string)null, true);

using (var istekStream = webRequest.GetRequestStream()) {
   istekStream.Write(tampon, 0, tampon.Length);
}

var yanit = (HttpWebResponse)webRequest.GetResponse();

var yanitIcerigi = string.Empty;
using (var responseStream = yanit.GetResponseStream()) {
   var streamReader = new StreamReader(responseStream);
   yanitIcerigi = streamReader.ReadToEnd();
}

Bu yöntem kullanılarak olay doğrulama (event validation) özelliği aktif edilmemiş tüm asp.net sayfalarına veri bildirimi yapabilirsiniz.

Olay doğrulama özelliği açılmış asp.net sayfalarında yukarıdaki koda ufak bir ekleme yaparak asp.net’in olay doğrulamasınca beklenen __EVENTVALIDATION alan değerini de bulup göndermemiz gerekli.

Asp.Net oturumları takip edebilmek için her bir oturuma özel tekil bir değeri istemciye çerez olarak iletmekte ve bir sonraki istekte bu bilgiye göre ilgili oturumda işlem yaptırmaktadır. Bu durumda oturum bilgisinin tutulduğu ve oturum gerektiren sayfalara veri gönderebilmek için bir CookieContainer oluşturup istekle ilişkilendirmelisiniz.

var ilkSayfaIcerigi = IlkIstek("[WEB SAYFASININ ADRESI]");

var viewState = AlanDegeriniBul(ilkSayfaIcerigi, "__VIEWSTATE");
var eventValidation = AlanDegeriniBul(ilkSayfaIcerigi, "__EVENTVALIDATION");

var tampon = Encoding.UTF8.GetBytes(gonderilecekVeri +
                string.Format("&__VIEWSTATE={0}&__EVENTVALIDATION={1}",
                  HttpUtility.UrlEncode(viewState),
                  HttpUtility.UrlEncode(eventValidation));

webRequest = (HttpWebRequest)WebRequest.Create("[WEB SAYFASININ ADRESI]");

webRequest.Method = "POST";
webRequest.ContentType = "application/x-www-form-urlencoded";
webRequest.ContentLength = tampon.Length;
webRequest.Proxy = new WebProxy((string)null, true);
webRequest.CookieContainer = new CookieContainer();

using (var istekStream = webRequest.GetRequestStream()) {
   istekStream.Write(tampon, 0, tampon.Length);
}

var yanit = (HttpWebResponse)webRequest.GetResponse();

var yanitIcerigi = string.Empty;
using (var responseStream = yanit.GetResponseStream()) {
   var streamReader = new StreamReader(responseStream);
   yanitIcerigi = streamReader.ReadToEnd();
}

Yukarıda yer alan C# kodu yardımıyla bir asp.net sayfasına veri gönderebiliyor olsakta, tam bir etkileşim yapabilmek için (örneğin bir butona basılması) takip etmemiz gereken bir kaç adım daha bulunmakta.

Asp.Net web sayfaları, form üzerindeki bir butona basılması gibi, olay geri bildirimlerini sayfa içerisinde tanımlı olan __doPostBack javascript metodunu kullanarak yapmaktadır. Bu javascript metodunun kodunu inceleyecek olursak;

function __doPostBack(eventTarget, eventArgument) {
    if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
        theForm.__EVENTTARGET.value = eventTarget;
        theForm.__EVENTARGUMENT.value = eventArgument;
        theForm.submit();
    }
}

__doPostBack metodu eventTarget ve eventArgument adıyla iki parametre kabul etmekte. Bu parametrelerden eventTarget parametresi tetikleyici form bileşenini belirtirken (örneğin; butona basıldı ise basılan butonun adı), eventArgument parametresi olay argumanlarını belirtmektedir. Bu parametreler metod içerisinde sırasıyla __EVENTTARGET ve __EVENTARGUMENT form alanlarına atanmakta, ardından da form’un sunucuya gönderimi yapılmakta.

Kod içerisinden __EVENTTARGET parametresine geçmemiz gereken değeri asp.net web sayfasını bir browserdan açarak görebiliriz. Sayfanın kaynak kodunu açarak tetikleyici bileşenin adını (örneğin bir tıklama olayı için tıklanacak butonun adı) kopyalanmalı.

Aşağıda şimdiye kadar anlattıklarımdan yola çıkarak Visual Studio 2010 ASP.Net Web Application şablonu ile oluşturulmuş bir web uygulamasına veri göndererek sisteme girişi sağlayan örnek bir uygulama kodunu bulabilirsiniz.

var ilkSayfaIcerigi = IlkIstek("http://localhost:35836/Account/Login.aspx");

var viewState = AlanDegeriniBul(ilkSayfaIcerigi, "__VIEWSTATE");
var eventValidation = AlanDegeriniBul(ilkSayfaIcerigi, "__EVENTVALIDATION");

var gonderilecekVeri = string.Format("{0}={1}",
     HttpUtility.UrlEncode("ctl00$MainContent$LoginUser$UserName"),
     HttpUtility.UrlEncode("KULLANICI ADI"));
gonderilecekVeri += string.Format("&{0}={1}",
     HttpUtility.UrlEncode("ctl00$MainContent$LoginUser$Password"),
     HttpUtility.UrlEncode("KULLANICI ŞİFRESİ"));
gonderilecekVeri += string.Format("&{0}={1}",
     HttpUtility.UrlEncode("__EVENTTARGET"),
     HttpUtility.UrlEncode("ctl00$MainContent$LoginUser$LoginButton"));
gonderilecekVeri += string.Format("&{0}={1}",
     HttpUtility.UrlEncode("__EVENTARGUMENT"),
     HttpUtility.UrlEncode(string.Empty));
gonderilecekVeri += string.Format("&{0}={1}",
     HttpUtility.UrlEncode("__VIEWSTATE"),
     HttpUtility.UrlEncode(viewState));
gonderilecekVeri += string.Format("&{0}={1}",
     HttpUtility.UrlEncode("__EVENTVALIDATION"),
     HttpUtility.UrlEncode(eventValidation));

var tampon = Encoding.UTF8.GetBytes(gonderilecekVeri);

webRequest = (HttpWebRequest)WebRequest.Create("http://localhost:35836/Account/Login.aspx");

webRequest.Method = "POST";
webRequest.ContentType = "application/x-www-form-urlencoded";
webRequest.ContentLength = tampon.Length;
webRequest.Proxy = new WebProxy((string)null, true);
webRequest.CookieContainer = new CookieContainer();

using (var istekStream = webRequest.GetRequestStream()) {
   istekStream.Write(tampon, 0, tampon.Length);
}

var yanit = (HttpWebResponse)webRequest.GetResponse();

var yanitIcerigi = string.Empty;
using (var responseStream = yanit.GetResponseStream()) {
   var streamReader = new StreamReader(responseStream);
   yanitIcerigi = streamReader.ReadToEnd();
}

Bu örnek veri gönderim kodu, içeriği hiç değiştirilmemiş ve 35836 portundan hizmet veren bir ASP.Net Web Application için hazırlanmıştır.

Info

   Güncelleme, 03 Şubat 2012 : Bu konu hakkında aldığım yoğun ısrarlar sonrasında bir webiner düzenlemeye karar verdim. NedirTv.com çatısı altında 27 Şubat 2012 Pazartesi günü saat 21:00‘da düzenlenecek olan bu webiner’e başlamasından yarım saat öncesinden itibaren https://www.livemeeting.com/cc/mvp/join?id=68WBPH&role=attend adresinden katılabilirsiniz.

Info

   Güncelleme, 03 Mart 2012 : Bu konu hakkında NedirTv.com çatısı altında düzenlenen webiner kaydı ve powerpoint sunusuna buradan ulaşabilirsiniz.

Fatih Boy

Ankara'da yaşayan Fatih, bir kamu kurumunda danışman olarak çalışmaktadır. ALM süreçleri, kurumsal veri yolu sistemleri, kurumsal altyapı ve yazılım geliştirme konularında destek vermektedir. Boş zamanlarında açık kaynak kodlu projeler geliştirmeyi ve bilgisini yazdığı makalelerle paylaşmayı seven Fatih, aynı zamanda Visual C# ve Visual Studio teknolojileri konusundan Microsoft tarafından altı yıl üst üste MVP (En Değerli Profesyonel) ödülüne layık görülmüştür. İş hayatı boyunca masaüstü uygulamaları, web teknolojileri, akıllı istemciler gibi konularda Asp.Net, Php, C#, Java programlama dilleri ve MySql, MsSql ve Oracle gibi veritabanı yönetim yazılımları ile çalışmıştır. İngilizce ve Türkçe olarak yayınlanan makalelerini gerek İngilizce bloğunda, gerekse de Türkçe bloğunda bulabileceğiniz gibi web sitesinden de açık kaynak kodlu geliştirdiği yazılımlarına ulaşabilirsiniz. vCard - Twitter - Facebook - Google+

26 yorum

  1. Yusuf   •  

    Hocam tam aradığım bir örnek yazmışsınız. Elinize sağlık. Fakat aklıma takılan bir soru var makaleniz ile ilgili. Post ederken değişkenlerin diğer sayfalara aktarımı \&\ ile yapıldığını söylemişsiniz ve bu kod buna göre çalışıyor sanırım. İşte tam burada aklıma takılan soru şu : Login sayfası gibi bir sayfada bu kod işimizi görür mü? yani gönderdiğimiz veri örneğin C# kodlarında işlenip,işlenen değerdeki sonuca göre başka bir sayfaya redirect ediliyorsa? O zaman nasıl bir çözüm bulmamız gerekecek?

  2. Fatih Boy   •     Yazar

    Merhaba Yusuf,
    Asp.Net gibi sunucu tarafında çalışarak html çıktı üreten framework/dillerde istemciden bilgi almanın POST, GET, HEAD, PUT, DELETE, TRACE, OPTIONS, CONNECT, PATCH gibi sadece bir elin parmakları kadar yöntemi vardır. Sayfayı geliştiren developer aldığı bilgiler doğrultusunda sunucu tarafında kullanıcı doğrulama (login) v.b. çeşitli iş mantıkları yüretebilir. Bu makalede anlatılan ve verilen örneklerler bir asp.net sayfasına programsal olarak login olabilirsin; fakat bu işlem sonrasında sunucunun yönlendirme (redirection) yapması tamamen farklı bir konu ve ayrı bir teknik gerektirecektir.

    Sunucunun istemciyi bir başka sayfaya yönlendirmesinin bir kaç yolu var aslında;
    1 – HTTP 3xx durum koduyla browserın yeni sayfaya gitmesi istenebilir.
    2 – Basit bir html oluşturularak yazılacak bir javascript kodu ile sayfa yüklenir yüklenmez yönlendirme yapılması sağlanabilir.
    3 – Sayfaya eklencek refresh meta tag‘ı ile browserın yöntelendirilmesi sağlanabilir.

    Bu yöntemler hakkında http://en.wikipedia.org/wiki/URL_redirection adresinde daha detaylı bilgi bulabilirsin.
    Senin örneğinde Login sonrası yapılan yönlendirmenin yukarıdaki yöntemlerden hangisi olduğunu bilerek bu yönde ayrı bir kodlama yapılması gerekecektir. Örnek vermek gerekirse; 1. yöntemle yapılan bir yönlendirmede sunucudan gelen yanıtın header’ı içerisindeki Location değeri bulunarak yeni istekler bu adrese yapılabilir.

    En kolay çözüm; eğer login sonrasında yönlendirilen url adresi sabitse ve biliyorsan kodunun içerisinde login işlemini makalemde paylaştığım tekniklerle gerçekleştirdikten sonra, takip eden istekleri yönlendirileceğini bildiğin adrese yapmandır.

    Umarım verdiğim bilgilerle faydalı olabilmişimdir,
    Fatih

  3. ahmet   •  

    üstad tebrikler çok güzel bir makale olmuş eline sağlık

  4. mexxanit   •  

    ellerinize sağlık fakat şu kodu biraz daha açarmısınız :
    (“ctl00$MainContent$LoginUser$LoginButton”)
    yani dolar işaretlerinin arasındakileri

    ilk sanırım master.page ikincisi masterpage in content placeholder kısmı sonuncusu buton id fakat arada kalanın ne olduğunu bir türlü çıkaramadım.

    mesela birde dropdownlist te değer göndermek istersem hangi yolu izlemeliyim ?

    teşekkürler…

    • Fatih Boy   •     Yazar

      Merhaba Mexxanit,
      Aslına bakacak olursanız buradaki “ctl00$MainContent$LoginUser$LoginButton” değerini asp.net tarafındaki bir kontrol olarak değil de html üzerinden yer alan bir kontrol adı olarak düşünmek daha doğru olacaktır. ASP.Net formları en nihayetinden HTML üzerine kurulu bir altyapı ve aksi belirtilmediği sürece veriyi browser’ın formu POST yöntemi ile göndermesi sayesinde alabilmekte. Gelen veri sunucu tarafında işlenmekte, değişken isimleri ilgili bileşenlerle eşleştirilerek gelen veriler bu bileşenlere atanmakta. ASP.Net kontrolleri istemci tarafında görüntülenebilmek için HTML’e dönüştürülür ve eşleştirme için de bu html karşılıklarına bir id değeri atanır. Sizin yapmanız gereken verisini göndermek istediğiniz bileşenin HTML karşılığı olarak gördüğünüz kontrol id’sini bilmek; ki bunu da browser’da kaynak kodu göster diyerek rahatlıkla yapabilirsiniz. Dropdownlist ise HTML’e dönüştürülürken, alabileceği değerler option tag’leri arasında verilmektedir; fakat POST ile gönderimi sırasında diğer bileşenlerden bir farkı yoktur. Sunucuya göndermek istediğiniz değeri option tagleri arasından bularak (option tag’inin value özniteliğinde bulunacaktır) diğer bileşenler gibi göndermeniz yeterli olacaktır.

  5. mewwlut   •  

    Hocam elinize sağlık çok güzel bi anlatım olmuş.

    ama beninde küçük bir sorunum var . Sayfa kaynak koduna ulaşabiliyorum fakat hata 500 döndürüyor. Sanırım ben bu parametre yollama işini beceremedim.
    Bu konuda bana yardımcı olabilirmisiniz.
    Yardımlarınız için şimdiden teşekkür ederim

    • Fatih Boy   •     Yazar

      Merhaba Mevlüt,
      Aldığın hata ve kodunu fatih at enterprisecoding nokta com adresinden bana mail ile iletebilirsen yardımcı olmaya çalışayım.

  6. Muhammed   •  

    Hocam elinize emeğinize sağlık
    Benim sizden bir ricam olacak;
    Bir c# winform uygulaması yapıyorum tasarım ve arayüz tamam kullanıcı kontrolleri ve diğer bölümleri kendimce bitirdim ancak ben google da anahtar kelimelere göre belirlenen bir site urlsini otomatik olarak bulup tıklayacak bir kod yazmak zorundayım yaklaşık 10 gündür araştırıyorum tam olarak istediğimi gerçekleştireceğim bir makaleye rastlamadım taki sizin bu makalenizi okuyuncaya kadar mümkünse bana bu konuda yardımcı olurmusunuz eğer isterseniz yazdığım programı ve sql i size yollayabilirim.Bu çok önemli bir proje benim için.Çünkü bitirdiğim zaman tüm Türkiye’ye pc net ve Chip tarafından dağıtılacak yani ciddi bir iş yardım ederseniz veya projeyi beraber yapmayı kabul ederseniz ben her türlü işbirliğine hazırım hocam.Eğer görüşmek isterseniz mail adresime posta yollayın telefon vereyim veya siz telefon verin ben sizi arayayım hocam Saygılarımla

    • Fatih Boy   •     Yazar

      Merhaba Muhammed,
      Makalemde paylaşmış olduğum yöntem yardımıyla tabiki bunu yapabilmen mümkün. Sana önerebileceğim bir başka alternatif de arama motorlarının biz yazılım geliştiricilere sunduğu API’ler olacak. Google ve Bing’in bu konuda API’leri bulunmakta ve kullanımı oldukça kolay. Özellikle Bing’in sunduğu Xml ve SOAP seçenekleri bana sorarsan incelemeye değer. Lütfen takıldığın noktada bana ulaşmaktan çekinme : fatih [at] enterprisecoding [nokta] com

  7. Muhammed   •  

    Hocam sağolun cevap için
    ben o API olayını tam olarak nasıl kullanacağımı bilmiyorum programımı baya ilerlettim ama bir kaç nokta kaldı takıldığım ben en iyisimi size kodları göndereyim öyle daha iyi olacak sanırım tabi buna izniniz varsa.

  8. Leo   •  

    merhabalar ben asp.nette yenı oldum ıcın ve ılk olarakta sayfalar arası werı alıswerısını aradım ıcın burda bu konuya msj atma ıstegı duydum cunku kocaman net alemınde turkce olarak duzgun sadece bu makale war ve bunuda nereye yazmamız gereklı yada ne yapmamız gereklı tam anlamadım. form_load’mı yazılıor yoksa button a mı yazıor yada ne bılım html bır butonamı yazılıor ne oluor tam anlayamadım lutfen yardım edın bende ogrenmek ıstıorum bu methodu ama tek basıma ogrene bılcek gıbı degıl bunlar. arastıorum sonuc yok en kısa zamanda sızden yanıt beklıorum cok tesekkurler

  9. Leo   •  

    neden var verı tıpınde yada var webRequest = (HttpWebRequest)WebRequest.Create(“[WEB SAYFASININ ADRESI]”); buraya yazılcak adres ne adresı fılan bence bunun gıbı kucuk ayrıntılarıda duzgun bır sekılde ekleyın alah rızası ıcın :(:( bir video cekın ne bılım daha cok aydınlatın cunku turk genclerı boole seylerı cok zor kendı ogrenebılıor nedense :S

  10. Fatih Boy   •     Yazar

    Bu konu hakkında aldığım yoğun ısrarlar sonrasında bir webiner düzenlemeye karar verdim. NedirTv.com çatısı altında 27 Şubat 2012 Pazartesi günü saat 21:00‘da düzenlenecek olan bu webiner’e başlamasından yarım saat öncesinden itibaren https://www.livemeeting.com/cc/mvp/join?id=68WBPH&role=attend adresinden katılabilirsiniz.

  11. misafir   •  

    çok sağ olun

  12. Abdurrahman Güngör   •  

    Makaleniz çok iyi yazılmış. Webinerinizi izledim kesinlikle çok ayrıntılı olmuş browser ile server arasındaki bütün ilişkileri ortaya dökmüşsünüz. Elinize sağlık çok yararlı oldu.

  13. Murat   •  

    Selam,
    Teşekkürler Paylaşım için…Gayet faydalı oldu…

    İyi çalışmalar…

  14. kuzey   •  

    merhaba hocam sorum
    post işleminde verileri sunucuya gönderip sonucunu alıyoruz,peki get methoduylada sunucuya bilgiler gidip geliyormu
    daha özetle login kontrolünü get methoduyla kullanabilirmiyim ? yoksa get sadace benim kendi sayfalarım arasında veri taşımak içinmi kullanılıyor ?
    teşekkürler

  15. Taner ŞENEL   •  

    Teşekkürler Makaleniz için.Çok faydalı.

    Bir ek yapmak istedim ben baya bi uğraştım da bilgileri post edeceğimiz sayfada autopostback olan bir dropdown var ise o postbacki de gerçekleştirip çıkan sonuçtaki viewstate i son post işlemimize göndermemiz gerekiyor. dropdown postback olduktan sonraki dropdowna bağlı bilgileri kullanmak için bunu yapmak gerekiyor.
    Teşekkürler

  16. hakan   •  

    Bir tanede top sakalsız müdür görsem dişimi kırıcam

  17. hasan tuncer   •  

    bu çalışıyor fakat postdan sonra siteden gelen cevapta türkçe karakter hatası oluşuyor? � gibi

    • Fatih Boy   •     Yazar

      Merhaba Hasan,
      Bahsettiğin problem sunucudan yanıtı okurken bir encoding belirtmemek kaynaklı.

      var streamReader = new StreamReader(responseStream);
      satırını
      var streamReader = new StreamReader(responseStream, Encoding.GetEncoding(“windows-1254”));
      ile değiştirerek denersen problemin düzelecektir. Bazı web siteleri encoding olarak ISO-8859-9
      kullanabiliyor. windows-1254 yerine ISO-8859-9 vererek de deneyebilirsin.

    • Fatih Boy   •     Yazar

      Daha genel geçer bir çözüm için şunu da kullanabilirsin;

      var streamReader = new StreamReader(responseStream, Encoding.GetEncoding(response.CharacterSet));

  18. Ugur   •  

    GetEncoding(“windows-1254″) ve GetEncoding(response.CharacterSet)sorunumu çözdü. çok teşekkür ederim.

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir