TGamesZeus 1
TGamesZeus
Best Studio 1
Best Studio
berkmenoo 1
berkmenoo
InfernoShade 1
InfernoShade
noisiv 1
noisiv
Manwe Work 1
Manwe Work
Agora Metin2 1
Agora Metin2
Bvural41 1
Bvural41
onur akbaş 1
onur akbaş
IronTalonX 1
IronTalonX
D 1
delimuratt
berzahx 1
berzahx
Hikaye Ekle

C# ile HTML Kaynak Kodu

DumanInc

Web Development
Telefon Numarası Onaylanmış Üye
Fahri Üye
TM Üye
Katılım
19 Nis 2009
Konular
423
Mesajlar
1,880
Çözüm
14
Online süresi
3mo 2h
Reaksiyon Skoru
968
Altın Konu
38
TM Yaşı
17 Yıl 2 Ay
Başarım Puanı
267
MmoLira
3,804
DevLira
9
Ticaret - 0%
0   0   0

HERAKLES Otomatik Avlı kalıcı sunucu. 19 Haziran'da açılıyor. Atius & Wizard güvencesiyle hemen kayıt ol, ön kayıt ödülleri aktif. HEMEN TIKLA!

Web sayfaları HTML kodlarından meydana getirilmektedir. Sayfa içerisinde yeralan veriler nitelik olarak HTML kodları ile ifade edilmektedir. Tarayıcılarınız üzerinde mouse sağ tuşuna basıp “Kaynağı Görüntüle” sayfanın oluşumunda bulunan tüm kaynak HTML kodlarını görebilirsiniz.

source.png


Bilindiği üzere bu HTML belgesi sunucuda barınmaktadır. Siz herhangi bir tarayıcı ile sayfanın adresini yazarak bir istekte bulunursunuz. HTML dökümanı ve beraberindeki tüm CSS, Javascript gibi unsurları, metin (text) formatında bilgisayarınıza ulaştırılır. Tarayıcınız bu dökümanda bildirilen tüm direktifleri gerçekleştirir ve sayfayı ekranınıza görüntüler.

Bu yazımızla birlikte C# ile HTML kaynak kodunu programatik olarak elde edebilirsiniz. Uygulamamızda .NET Framework’ün System.NET kütüphanelerinden faydalanarak siteye bir istekte bulunacağız. Ardından System.IO kütühanesi yardımıyla istek sonucu gelen sayfa kodlarını dosya akımı şeklinde okuyacak ve sonucu metinsel (string) bir bilgi alarak alacağız.

Uygulamaya başlarken .Net Framework’ün System.NET ve System.IO kütüphanelerinin kullanılacağını “using” deyimi ile kodlarımızın başında bildirmeliyiz.


1
2
3
4
5

using System;
using System.IO;
using System.Net;
Uygulama kodlarını “HtmlKaynakOku” isimli bir metod altında gerçekleştirelim. Söz konusu metodu dilediğiniz platformda (Console, WPF, WinForm) kullanabilirsiniz.​


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

string HtmlKaynakOku(string url){
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();

if (response.StatusCode == HttpStatusCode.OK)
{
Stream receiveStream = response.GetResponseStream();
StreamReader readStream = null;

if (response.CharacterSet == null)
{
readStream = new StreamReader(receiveStream);
}
else
{
readStream = new StreamReader(receiveStream, Encoding.GetEncoding(response.CharacterSet));
}
string data = readStream.ReadToEnd();

response.Close();
readStream.Close();

return data;
}
Uygulama için kullandığımız sınıf ve metodlarını öğrenelim ve neler yaptığımıza bir bakalım;

HttpWebRequest : Doğrudan HTTP kullanarak sunucularıyla etkileşim kurmak için kullanılan yöntemleri barındırır. GetResponse() Metodu, belirtilen adres için eşzamanlı istek yapar.

HttpWebResponse : HTTP isteği gönderip, sunucudan dönen HTTP yanıtlarını almak için kullanılır. Uygulamada kullandığımızı GetResponseStream() metodu, Sunucudan yanıtın gövdesini (<body>) okumak için kullanılan bir akış nesnesi yaratır.

Stream : Gerek bir dosyadan okuduğunuz byte dizileri, gerekse bir iletişim kanalından (örneğimizde TCP/IP kanalı ) üzerinden gelen verilere ait byte dizilerini akış olarak temsil eden sınıftır.

StreamReader : Bir kaynaktan gelen byte dizi akışını belirli bir karakter seti ile okumak için kullanılır.

Uygulamımızı Console ortamında test edelim. Örneğimiz için sitemizin ana sayfasının HTML kaynak kodunu okuyacağız.


HtmlOku.cs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47

using System;
using System.IO;
using System.Net;
using System.Text;

namespace HtmlOku
{
class Program
{
static void Main(string[] args)
{
string urlAdres = " ";
string htmlKaynak = HtmlKaynakOku(urlAdres);
Console.WriteLine(htmlKaynak);
Console.ReadKey();
}

static string HtmlKaynakOku(string url)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
string data="";
if (response.StatusCode == HttpStatusCode.OK)
{
Stream receiveStream = response.GetResponseStream();
StreamReader readStream = null;

if (response.CharacterSet == null)
{
readStream = new StreamReader(receiveStream);
}
else
{
readStream = new StreamReader(receiveStream, Encoding.GetEncoding(response.CharacterSet));
}

data = readStream.ReadToEnd();

response.Close();
readStream.Close();
}
return data;
}
}
}
 

Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)

Geri
Üst