Tam Sürümünü Görmek İçin : ASP.NET Whois Sorgusu

E.J.T
15.08.2007, 21:27
ASP.NET ile whois sorgulama işleminin nasıl yapıldığına bakacağız.

Bir domain adı almak istediğimizde ik olarak başkası tarafından register edilip edilmediğine yani almak için müsait olup olmadığına bakarız. İşte bende bu makale de ASP.NET ile whois sorgusunun nasıl yapılacağını anlatacağım.

Web kaynaklarını uzaktan sorgulamak için System.Net.WebClient sınıfını kullanırız.  Bu sınıf internet kaynaklarına erişmek için WebRequest sınıfını kullanır.  Burada, bir byte array döndüren ve kaynaktan veriyi indiren WebClient sınıfının Download metodu vardır. Byte olarak gönderilen veri sisteme ANSI olarak encode edilir. Alınan veriyi parse etmek için Regex sınıfını kullanılır. İhtiyacımız olan veriyi    elde etmek için de Match sınıfını kullanacağız...

Peki bu bilgileri nereden sorgulayacağız? 

Bu bilgileri tutan whois serverları kullanarak istediğimiz domain adını sorgulayabiliriz. Ben bu projemde http://www.directnic.com/whois Whois serverını kullanacağım.

Şimdi örneğimize geçelim;

İlk olarak Bir Web Projesi oluşturalım...

Projemize domain adlarını sorgulamak için kullanacağımız ve domain adını girmemiz için formumuza bir textbox, domain adı uzantısını seçmemiz için bir dropdown, sonucu görüntülemek için  label ve whois sorgusunu yapmak için button  ekleyelim.

Benim oluşturduğum Whois Sayfası aşağıdaki gibidir;

Şimdi bu işlem için kodlarımızı yazalım;

private string response = "";
protected void btnQuery_Click(object sender, EventArgs e)
{
try
{
string URL = "http://www.directnic.com/whois/index.php?query="
+ this.txtDomain.Text
+DropDownList1.SelectedItem.Text;

            byte[] buffer1 = new WebClient().DownloadData(URL);
//Whois Servera istek gönderilir ve sonuş byte veriye çevrilir...

            response = Encoding.Default.GetString(buffer1); //istek ansi olarak encode edilir...

}
catch (WebException exception3)
{
this.txtResult.Text = exception3.Message;

}
try
{
string srart = "<p class=\"text12\">";
string end = "</p>";
Match match = new Regex(srart + "(?<MYDATA>.*?(?=" + end+ "))", RegexOptions.Singleline | RegexOptions.IgnoreCase).Match(response);
//Geri Dönen Değer Parde edilir ve Match Sınıfı ile veriyi elde ederiz...

            this.txtResult.Text = match.Groups["MYDATA"].Value + "<br>";
//sonuç kullanıcıya gösterilir...

if (! match.Groups["MYDATA"].Success) //Domain Adı Register Edilmemişse...
{
lblSonuc.Text = "Bu Domain Adını Register Edebilirsiniz..";
}
else
{
lblSonuc.Text = "Bu Domain Adı Register Edilmiş..";
}
}
catch
{
this.txtResult.Text = "Sorry the whois information is currently not available !!";
}


Evet şimdi projemizi çalıştıralım;


Şimdi domain adını sorgulayalım;


Whois sonucu bu domain adının daha önceden register edilmiş olduğunu gördük; şimdide register edilmemiş bir domain adı sorgulayalım;