Best Studio 1
Best Studio
TuZaKK 1
TuZaKK
Mt2Hizmet 1
Mt2Hizmet
Agora Metin2 1
Agora Metin2
Bvural41 1
Bvural41
kaptanmikro1 1
kaptanmikro1
R 1
Roksam
[DEV]AB 1
[DEV]AB
Sevdamsın 1
Sevdamsın
farkmt2official 1
farkmt2official
emirhanHCL 1
emirhanHCL
Scarlet 1
Scarlet
Hikaye Ekle

C# ile HTML Kaynak Kodu

Türkiye'de ilk Mobil & PC Aynı Anda Metin2 Oyna. Triarchonline kalıcı ve uzun ömürlü yapısı ile 24 Temmuz'da açılıyor. | 1-99 Mobil Metin2 Triarch 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