ASP.NET’ te Response ve Request Nesneleri

Eyl 06, 2013

İnternet sayfalarının görüntülenebilmesi için kullanıcının (client) sunucudan (server) istekte bulunması gerekir. Bu istek, tarayıcıya yazılan web adresidir. Sunucu ise bu isteğe karşılık verir. Kullanıcı ve sunucu arasındaki bu iletişim HTTP Protokolü (Hyper Text Transfer Protocol) ile sağlanır. Sunucuya gönderilen istekler, HTTP Protokolü sayesinde tarayıcıya iletilir. Bu sayede çağrılan web sayfası görüntülenir.

Response Nesnesi

Sunucunun istemciye cevap vermesini sağlayan nesnedir. Nesneye ilişkin metodlar kullanılarak gerekli cevaplar üretilebilir. Bu metodlar aşağıda yer almaktadır:

Response.Write

Sunucu tarafından sayfaya birşeyler yazdırılmak isteniyorsa bu metod kullanılır. Yazdırılan ifade bir değişken değeri de olabilir, mesaj da olabilir. Tırnak içerisine yazılan ifade, değişmeden sayfaya yazdırılır.

Response.Redirect

Bu metod, bir sayfadayken başka bir sayfaya yönlenmeyi sağlar. Kullanımı şu şekildedir:

  • Response.Redirect("yonlenilecek_adres.aspx");

Bu komutla, "yonlenilecek_adres.aspx" sayfasına gidilir. Eğer bir web adresine yönlenilecekse; bu sayfanın tam adresi yazılmalıdır. Örnek vermek gerekirse;

  • Response.Redirect("http:\\bidb.itu.edu.tr");

şeklinde kullanılır.

Response.Buffer

Tarayıcıya herhangi bir çıktı iki şekilde gönderilir. Bunlardan birincisinde, arka planda çalışan kodlar, tüm kodlar çalıştırılana kadar "tampon (buffer)" denilen bir hafızanın içerisinde saklanır. Hepsi tamamlanınca tarayıcıya gönderilir. Bu durumda sayfada bir şey belirtilmesine gerek yoktur.

Diğerinde ise; tampon olayı olmadan, kod ve betik (script)'ler direk olarak tarayıcıya gönderilir. Bu durumda ise; "Response.Buffer=False" kodunun yazılması gerekmektedir.

Response.Flush

Bu metod kullanıldığı zaman, o zamana kadar hafızaya (buffer) kaydedilen her şey hemen tarayıcıya gönderilir. Yani "Response.Buffer()" metodunun yaptığının tam tersini yaparak, o zamana kadar tampon hafızaya kaydedilmiş her şeyin tarayıcıya gönderilmesini sağlar.

Response.Clear

Bu metod, o zamana kadar hafızaya kaydedilmiş olan tüm verileri siler. Bu metottan önce tarayıcıya gönderilen hiçbir şey ekranda görülmez (flush metodu kullanılmışsa, flush metodundan önceki veriler ekranda görülür).

Response.End

Bu metotla birlikte, hafızaya (buffer) veri gönderimi sonlandırılmış olur.

Response.Expires

Bu metod, kullanılan scriptlerin önbellekte (cache) ne kadar saklanacağı bilgisini tutar.

Response.ExpiresAbsolute

Bu metod, Response.Expires metodunun tam tersi olarak, kullanılan scriptlerin önbellekte saklanmasını sağlar.

Response.IsClientConnected

Bu metotla, sunucuya bağlı kullanıcı olup olmadığı öğrenilir.

Response.ContentType

Kullanılacak Asp sayfasının içeriğini tanımlar. Bu özellik kullanılarak tarayıcıda Word, Excel, PowerPoint gibi programlar açılabilir. Kullanılabilecek bazı özellikler:

  • Response.ContentType="application/msword" ->Tarayıcının word dosyası açmasını sağlar.
  • Response.ContentType="application/vnd.ms-excel" ->Tarayıcının excel dosyası açmasını sağlar.
  • Response.ContentType="text/HTML" ->Sayfada HTML belgesi açılmak isteniyorsa, bu metod kullanılır.
  • Response.ContentType="text/JPEG" ->Sayfada jpeg türünden bir resim açılmak isteniyorsa bu metod kullanılır.
  • Response.ContentType="text/GIF" ->Sayfada gif türünden bir resim açılmak isteniyorsa, bu metodkullanılır.

Response.Charset

Hazırlanan sitede, kullanılan dile ait karakterlerin kullanımını sağlayan metottur. Karakter dili tanımlanmadığı taktirde, o dile özgü karakterler okunamayacak, dolayısıyla görüntülenemeyecektir. Örneğin Türkçe'deki "ç, ş, ü, ö" gibi harfler; Türkçe'nin Windows'a uyumlu seti olan 1254 tanımlanmamış olursa görüntülenemez. Örnek kullanımı:

<%Response.Charset("karakter kodu")%>

şeklindedir.

Türkçe'nin karakter kodu ise şu şekilde belirtilir:

<%response.Charset="ISO-8859-1"%>

Response.Cookies-Request.Cookies

Bir web sayfasında tanımlanan değişken değerleri, sadece o sayfa için geçerlidir. Başka bir sayfaya geçildiği zaman, bu değerler sunucu tarafından bilinmediği için hata ile karşılaşılır. Bunun sebebi; sunucu, işlenecek değerleri kullanıcıya direk olarak gönderir ve diğer sayfalar için bu değerleri barındırmaz. Bunu çözmenin yollarından biri çerez (cookie) kullanmaktır.

Çerezler, kullanıcının bilgisayarında saklanan, kullanıcı hakkında bilgiler içeren ve bu sayede sunucunun kullanıcı hakkında bilgi edinebildiği küçük dosyalardır. Bu bilgiler, kullanıcı adı, şifre gibi kullanıcının daha önceden girdiği bilgiler olabilir. Bu küçük dosyalar sayesinde sunucu, kullanıcının bu tür bilgilerini bilerek sayfaları bu bilgilere göre düzenleyebilir.

Örnek vermek gerekirse; kullanıcının önceden ziyaret edip çeşitli bilgilerini girdiği bir site, bir süre sonra kullanıcı tarafından ziyaret edildiğinde, site girilen bilgileri hatırlar ve bu bilgileri kullanıcıya sunar. Bu olay, çerezler sayesinde meydana gelmektedir.

Çerezlerin oluşturulmasını, oluşturulan çerezlere erişimi "HttpCookies" nesnesi sağlar. HttpCookies nesnesi ise Response ve Request nesneleri ile yönetilir.

Çerezlerin kullanımı; çerez oluşturulması ve oluşturulan çerezlerin tekrar elde edilmesi şeklindedir.

  • Response.Cookies["isim"].Value="Çerez Değeri";

Bu satırda "isim" adlı bir çerez oluşturuldu ve bu çerezin değeri "Çerez Değeri" olarak atandı.

  • Request.Cookies["isim"].Value;

Bu satırda ise "isim" adlı önceden oluşturulmuş çerezin değeri elde edilerek istenilen yerde kullanılabilir.

Response.Cookies ve Request.Cookies nesneleriyle ilgili uygulamalar, Response Nesneleri adlı alt sayfada bulunmaktadır.

Request Nesnesi

Kullanıcının sunucudan talep ettiği her sayfa istek (request) olarak değerlendirilir. Kullanıcıdan bilgi almaya yönelik bu nesne kullanılmaktadır. Metotları şu şekildedir:

Request.Querystring

Formlarda "get" metodu kullanılarak bilgi gönderilmek istendiği zaman, bu bilgi "Request.Querystring" metodu ile alınır. Ayrıca linkler kullanılarak da bilgi gönderilmek istenebilir. Bu bilgi "get" metodu kullanıldı sayılarak "Request.Querystring" metoduyla alınabilir. Örnek kullanımı şu şekildedir:

  • Request.Querystring("formda_kullanılan_nesne");

Request.Form

Formlarda "post" metodu kullanılarak gönderilen bilgi, "Request.Form" metodu kullanılarak alınır. Fakat linkler aracılığıyla gönderilen bilgiler, bu metotla alınamaz. Örnek kullanımı şu şekildedir:

  • Request.Form("formda_kullanılan_nesne");

Request.ServerVariables

Sunucu ve tarayıcı hakkında bilgi alınmak istendiğinde kullanılan metottur. Bazı önemli bilgileri almak için aşağıdaki metotlar kullanılır:

  • Kullanılan tarayıcı için "Request.ServerVariables["http_user_agent"]" kullanılır.
  • IP adresi için "Request.ServerVariables["remote_addr"]" kullanılır.
  • Dns bilgileri için "Request.ServerVariables["remote_host"]" kullanılır.
  • Kullanılan metod için "Request.ServerVariables["request_metod"]" kullanılır.
  • Sunucunun etki alanı(domain) ismi için "Request.ServerVariables["server_name"]" kullanılır.
  • Sunucunun port numarası için "Request.ServerVariables["server_port"]" kullanılır.
  • Sunucunun kullandığı yazılım için "Request.ServerVariables["server_software"]" kullanılır.
  • Kullanıcının bağlantısının güvenlik özellikleri için "Request.ServerVariables["gateway_interface"]" kullanılır. Burada kullanıcı bağlantısı güvenli ise "on",değilse "off" görünür.
  • Web sunucusunun kaç yere çalışmakta olduğunu öğrenmek için "Request.ServerVariables["https_server_subject"]" kullanılır.
  • Sunucunun çalıştırdığı HTTP'nin sürümü için "Request.ServerVariables["server_port_secure"]" kullanılır.

Burada, metotların içerisinde kullanılan değişkenler, programlama yoluyla değiştirilemezler.

Request.ClientCertificate

İstemcilerin sertifikaları bu metod sayesinde tutulur. Her biri seri numarasına sahip olan bu sertifikalar, yetkili bir kurum tarafından verilir. Sertifika uygulaması, Web Sunucusunun Secure Socket Layers adlı HTTP protokolü tarafından yapılmalıdır; yani yazılan web adresinin başına "http:\\" yerine "https:\\" yazılmalıdır. Bu metod sayesinde, kullanıcının gerçekten siteye girme izni olup olmadığı, sertifikanın geçerlilik tarihi gibi özellikler belirtilebilir. Örnek kullanımlar şu şekldedir:

  • Kullanıcının siteye giriş izni olup olmadığı, o kullanıcının sertifika numarası "sertifika_numarası=Request.ClientCertificate(SerialNumber)" koduyla"sertifika_numarası" değişkenine atanarak anlaşılabilir. Bu değişken, sunucuda tutulan sertifika değerleriyle karşılaştırılarak, o kullanıcının gerçekten giriş izni olup olmadığı öğrenilir.
  • Request.ClientCertificate("ValidFrom") kullanımıyla, sertifikanın hangi tarihte başladığı anlaşılır.
  • Request.ClientCertificate("ValidUntil") kullanımıyla, sertifikanın hangi tarihe kadar geçerli olduğu anlaşılır.

Request.TotalBytes

Kullancının sunucudan talep ettiği bilginin kaç byte olduğunu gösteren metottur.

Request.BinaryRead

Kullanıcıdan sunucuya "post" metoduyla gönderilen bilgiler, bu metot sayesinde okunur.