C#nedir?com
 
YAZAR HAKKINDA
Tolga Aykurt
Tolga Aykurt
www.tolga-aykurt.com
İletişme geçmek için tıklayın.
5 Makalesi yayınlanmakta.
Yazar hakkında detaylı bilgi için tıklayın.
Yayınlanan diğer makaleleri için tıklayın.
İlgili etiketler: ajax asp atlas management net postback request webrequest yenileme yineleme ASP.NET Tolga Aykurt
 
YAZI HAKKINDA
Türü : Makale
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
Seviyesi : Orta
Kategori : ASP.NET
Yayınlanma Tarihi : 27.2.2010
Okunma Sayısı : 16170
Yorum Sayısı : 0     yorum yaz
Site İçi AramaSİTE İÇİ ARAMA
Üye Girişini AçÜye GİRİŞİ
Üye girişi için tıklayın.
Kullanıcı Adı
Şifre
 
Beni her zaman hatırla
Bir hafta boyunca kullanıcı bilgilerinizi kullanıcı çıkışı yapana kadar hatırlar. (Paylaşılan bilgisayarlarda önerilmez.)
 
Şifremi / Kullanıcı Adımı unuttum.
 
.net TV RSS Serbest KÖŞE (?)
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
emre TAŞ
XML - Deniz Kılınç
emre TAŞ
yazının devamı >
emre TAŞ
Decompiling and Reverse Engineering .Net Radyo
emre TAŞ
yazının devamı >
emre TAŞ
Masaüstü mü ? İnternet Mi? .Net Radyo
emre TAŞ
yazının devamı >
emre TAŞ
.Net Kavramları - .Net Radyo
emre TAŞ
yazının devamı >
emre TAŞ
Yeni Başlayanlar için - .Net Radyo
emre TAŞ
yazının devamı >
Makale Gönder Bende Yazmak İstiyorum
.net TV RSSBlogroll
Turhal Temizer 'in Blogu
ChatBot UI Sample 11.12.2017
Turhal Temizer 'in Blogu
C# – IRR Function 11.12.2017
Burak Selim Şenyurt
JWT(JSON Web Token) Kullanımı 11.12.2017
Burak Selim Şenyurt
Apache Kafka ile Konuşmaya Çalışmak 11.12.2017
  Diğer Herşey
Sponsorlar
BT Akademi
Medya Portakal
Video Hosting Sponsoru
Csharpnedir.com bir Ineta üyesidir
Uzman Abi
Her Yönüyle C# - Sefer Algan
Sys.Net.WebRequest Sınıfı İle AJAX
 
Kapat
Sayfayı Yazdır Sık Kullanılanlara Ekle Arkadaşıma Gönder MySpace Del.Ico.Us Digg Facebook Google Mixx Reddit StumbleUpon

Merhaba Arkadaşlar,

Önce ki paylaşımlarımda XMLHttp ve XMLHttpRequest ActiveX objelerinden bahsetmiştim. Bu gün yine AJAX yolundan devam ederek Sys.Net.WebRequest nesnesinden bahsetmek istiyorum. Sys.Net.WebRequest nesnesi, VS içerisinde bulunan "AJAX Extensions" ların bir parçasıdır ve sayfalarımızdan Http talepleri başlatmamıza olanak verir. Microsoft AJAX Library'ye browser bağımsız asenkron iletişim desteği sağlar (Alıntı: Advanced ASP.NET AJAX Server Control For .NET Framework 3.5 - Adam Calderon,Joel Rumerman). O halde isterseniz gelin fazla zaman harcamadan bu sınıfın property ve metodlarına bir göz atalım.

Özellikler (Properties)
body - get, set : Talep için kullanılacak olan body (post talepleri için),
executor - get, set : Talep hakkında bazı bilgilere ulaşmamızı sağlayan özellik,
headers - get : Talebe ait Http header bilgileri,
httpVerb - get, set : Http talebinin türü (GET,SET, HEAD vb.) ,
timeout - get, set : Talebe ait zaman aşımı süresi,
url - get, set : Talebin başlatılacağı url bilgisi,
userContext - get, set : Talebe ait kullanıcı konteksti


 

Metodlar
add_complated : WebRequest nesnesinin server'dan gelecek olan bilgileri alabilmesi için bir "complated" metodu eklememizi sağlar,
complated : WebRequest nesnesinin "add_complated" metodu ile atanmış olan ve server'dan gelen bilgileri işlemek için kullanılacak "complated" metodu.
getResolveUrl : Talebe ait tam url'i verir,
invoke : Talebin başlatılması için kullanılır,
remove_complated : WebRequest nesnesine eklenmiş olan "complated" event handler'ını nesneden silmek için kullanılır.

Her bir metodun ve özelliğin ayrıntısına girmek istersek çok ciddi uzunlukta bir yazı ortaya çıkacak. Bir de bu yazının sonuna örnek uygulama eklendiğinde okunması zahmetli bir paylaşım olacak. O halde yukarı da ki property ve metodları bir örnek içerisinde kullanalım ve kuru sözlerin yerini pratiğe bırakalım.

Burada ilk iki makalemde kullandığım basit örneği tekrar kullanmak istiyorum. Çok basit olduğu için çokta pratik geliyor bana. Karmaşadan uzak bir örnek. Örnek içerisinde ele alacağımız durumu burada yeniden tekrar etmemiz gerekirse; Personele ait ad ve soyad bilgilerini alarak bir url'e "GET" talebi başlatacağız ve sonucunda personele ait telefon bilgisini alacağız. Örneğin çok basit olduğunun farkındayım(makalelerimi takip edenlere artık çok basit gelecektir). İlerleyen makalelerimde sizlerle gerçek hayatın içinden bir durumu ele alıyor olacağız. İnanıyorum ki çok eğleneceksiniz. Kullanacağımız örnek için diğer makalelerimi yeniden inceleme zahmetinden sizleri kurtarmak için talebi başlatacağımız "EmailBul.aspx" isimli sayfaya ait html içeriği aşağıda yeniden veriyorum. Örnekte kullanacağımız "DataPage.aspx" isimli sayfanın page direktifi dışında tüm içeriğini silmemiz gerektiğini unutmayalım. Eğer bu örneği yeniden yapmak istemiyor yada buna ayıracak zamanınız yoksa ilgili kodları yazının sonunda indirebilirsiniz. Buna rağmen hiç değilse yeni karşılaştığımız WebRequest sınıfı ile ilgili kod kısınlarını kendiniz uygulamaya çalışırsanız büyük faydası olacaktır.

Server'a HTTP GET talebi başlatmak için kullanacağımız "EmailBul.aspx" isimli sayfamızın html tag'leri aşağıda ki gibidir.

<table border="0px" style="width:100%;">
    <tr>
        <td style="width: 10%;">
            Adı :
        </td>
        <td>
            <input id="txtAdi" name="txtAdi" type="text" />
        </td>
    </tr>
    <tr>
        <td style="width: 10%;">
            Soyadı :
        </td>
        <td>
            <input id="txtSoyadi" name="txtSoyadi" type="text" />
        </td>
    </tr>
    <tr>
        <td colspan="2">
            <input id="btnSorgula" type="button"value="Mail Adresini Getir" onclick="startRequest()" />
        </td>
    </tr>
    <tr>
        <td colspan="2">
            <div id="divSonuc" ></div>
        </td>
    </tr>
</table>

Yukarı da verdiğim tag'leri page'imize uyguladıktan sonra talebimizi başlatmak için kullanacağımız "startRequest()" isimli javascript metodumuzu yazmaya başlayabiliriz. Bundan önce, WebRequest sınıfını kullanabilmemiz için sayfamızın en üst kısmına, tüm kontrollerden önce "AJAX Extensions" içerisinde bulunan "ScriptManager" objesini eklemeliyiz.

<script language="javascript" type="text/javascript">
    function startRequest() {
        var divSonuc = $get("divSonuc");
        var queryString = "ad=" + encodeURIComponent($get("txtAdi").value) +
                                   "&soyad=" + encodeURIComponent($get("txtSoyadi").value);
       
        var webRequest = new Sys.Net.WebRequest();
        webRequest.set_httpVerb("GET");
        webRequest.set_url("DataPage.aspx?" + queryString);
        webRequest.add_completed(
            function(executor, args) {
                if (executor.get_responseAvailable()) {
                    divSonuc.innerHTML = "Personel E-Posta Adresi: " + executor.get_responseData();
                }
                // Gelen status kodlarına göre özel işlemler burada yapılabilir.
            }
        );

        webRequest.invoke();
    }
</script>

Farkettiniz mi bilmiyorum ancak gördüğünüz gibi WebRequest sınıfını direk olarak kullandık. Browser tarafından desteklenip desteklenmediğini kontrol etmedik. Nedeni ise bu nesnemizin tüm browser'lar da çalışabiliyor olmasıdır. Böylece zahmetli bir işten de kurtulmuş olduk. Bu açıklamadan sonra isterseniz gelin bir de server-side kodlarımıza bakalım ve burada ne yaptığımızı yeniden hatırlayalım.

protected void Page_Load(object sender, EventArgs e)
{
    Response.ContentType = "text/Plain";

    string ad = Request.QueryString["ad"].ToString();
    string soyad = Request.QueryString["soyad"].ToString();

    SqlConnection connection = null;
    SqlCommand command = null;

    try
    {
        connection = new SqlConnection("server=TOLGA-PC\\TOLGAAYKURRT;database=AdventureWorks;integrated security=SSPI");
        command = new SqlCommand("select EmailAddress from Person.Contact where FirstName=@ad and LastName=@soyad", connection);

        command.Parameters.AddWithValue("@ad", ad);
        command.Parameters.AddWithValue("@soyad", soyad);

        connection.Open();
        Object email = command.ExecuteScalar();
        connection.Close();

        if (email != null && email != DBNull.Value)
        {
            Page.Response.Write(Convert.ToString(email));
        }
        else
        {
            Page.Response.Write("<font color='Red'>Mail adresi bulunamadı!!!</font>");
        }
    }
    catch (Exception ex)
    {
        Page.Response.Write(ex.Message);
    }
    finally
    {
        if (connection != null)
        {
            if (connection.State != System.Data.ConnectionState.Closed) connection.Close();
            connection.Dispose();
            connection = null;
        }

        if (command != null)
        {
            command.Dispose();
            command = null;
        }
    }
}

XMLHttp nesnesi ile ilgili diğer yazdığım makalerlerden de hatırlayacağınız gibi server tarafında tek yapmamız gereken querystring'leri almak ve veritabanı sorgumuz için uygun query'yi oluşturmak. Daha sonra elde ettiğimiz sonuçları "Response.Write()" metodu yardımıyla client'a göndermek. İşte bu kadar basit ve kolay.

Burada sanırım bir şey dikkatinizi çekmiştir; WebRequest nesnesi için kullandığımız metodlar ve property'ler, XMLHttp nesnesi ile büyük benzerlik taşımaktadır. Kesinlikle doğru. WebRequest nesnesi XMLHttp ActiveX objesinin sarmalayıcısıdır. Yani aslında arka planda yine XMLHttp nesnesi kullanılmaktadır. Ancak WebRequest nesnesi ile browser sorunlarını düşünmek zorunda olmayışımız büyük avantajdır. Bununla beraber WebRequest nesnesinin sarmalayıcı olmasından kaynaklanan doğal sonuç olarak XMLHttp nesnesinin domain dışına request yapamama dezavantajı burada da varlığını sürdürmektedir.

Selamlar.

tolga[et]tolga-aykurt[nokta]com

Kaynak Kodlar İçin Tıklayınız.

Makale:
Sys.Net.WebRequest Sınıfı İle AJAX ASP.NET Tolga Aykurt
  • Yazılan Yorumlar
  • Yorum Yaz
Bu konu hakkında yayınlanan yorum bulunmamaktadır.
"Yorum Yaz" tabını kullanarak sizde yorumlarınızı yazabilirsiniz.
Yorum yazabilmek için üye girişi yapmalısınız. Üye girişi için tıklayın.
Üye değilseniz Üyel Ol linkine tıklayarak üyeliğinizi hemen başlatabilirisniz.
 
  • Bu Konuda Son 10
  • Eklenen Son 10
  • Bu Konuda Geçmiş 10
Bu Konuda Yazılmış Yazılmış 10 Makale Yükleniyor
Son Eklenen 10 Makale Yükleniyor
Bu Konuda Yazılmış Geçmiş Makaleler Yükleniyor