WebBrowsersınıfı ile istediğiniz Request’leri nasıl yaparız?Bunun için öncelikle bir Windows projesi oluşturmak gerekiyor. WebBrowser nesnesini isterseniz toolboxdan ekleyebilirsiniz ama ben direk codebehind tarafında oluşturmayı tercih ediyorumpublic partial class frmMain : Form{WebBrowser browser;WebBrowser spider;…}
browser nesnesi ilk başta girilecek siteye request yapmak için kullandığım objedir. spider ise girilen sitedeki linkleri yakalayıp o linklere sırasıyla request atmak için kullandığım objedir. 2 obje kullanmamın sebebi WebBrowsersınıfının DocumentCompletedeventini kullanmaktır.Bu kullanacağımız event biraz problemli eğer request yaptığımız sayfada baska bir yerden iframe tarzı site yükleniyorsa onun içinde complete verebiliyor olması bunun için ufak bi if kullanarak bu problemi çözebiliyoruz. Ama öncellikle webbrowser nesnemizi oluşturup ilk requestimizi atmamız gerekiyor.public frmMain(){//Bunu BackgroundWorker kullanmak isterseniz ve invoke yapmak istemiyorsanız kullanabilirsiniz.//Bir thread içinde başka bir threadde yaratılan objeye direk erişmek için kullanılır.//Control.CheckForIllegalCrossThreadCalls = false;browser = new WebBrowser();browser.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(browser_DocumentCompleted);RequestData();}
Form açıldığında artık web browser nesnemiz ve event’imiz tanımlanmış durumda şimdi RequestData’da ilk isteği yapıp DocumentComplete’de yapmamız gereken işlemleri yazmalıyız.void RequestData(){string postdata = “user=frosten&pass=1234”;System.Text.Encoding encoder = System.Text.Encoding.UTF8;byte[] data = encoder.GetBytes(postdata);browser.Navigate(“http://google.com/login”, string.Empty, data, “Content-Type: application/x-www-form-urlencoded”);}
void browser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e){//sayfa tamamen yüklendiyseif (browser.DocumentText.ToLower().IndexOf(““) > -1)
{//daha önceden tanımladığım BackgroundWorkerworker = new BackgroundWorker();worker.DoWork += new DoWorkEventHandler(worker_DoWork);worker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(worker_RunWorkerCompleted);worker.RunWorkerAsync();}}

Bunlardan sonra ilk Requestimizi bitirmi olduk. Bir sonraki yazıda request sonrası gelen HTML içerisinde bulunan Linkleri alıp spider ile onlara Request atmayı ve BackgroundWorker‘i nasıl kullanacağımızı anlatacağım.Bu makalede kullanılan methodlar ile yapılan örnek uygulamayı görmek için sitemi ziyaret edebilirsiniz.