HttpWebRequest ve 403(Forbiden) – 406(Not Acceptable) Hataları

HttpWebRequest nesnesiyle sayfaların html kaynaklarını çekmek bazı sayfalarda sorun yaşatabiliyor. Mesela wikipedia‘nın kaynağını çekerken yaşadığım Accept özelliği hatası gibi. Eğer bir değer atamazsak bazı sayfalar hataya düşüyor. Fakat içine “serdar :)” bile yazsak sayfa geliyor.

css gibi özel tipleri çekerken de sorun yaşamamak için “text/*” gibi genel bir Accept tanımlması yapılmalı…

 
Uri uri = new Uri("http://en.wikipedia.org/wiki/Special:Export/Train");
HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(uri);
httpWebRequest.Credentials = System.Net.CredentialCache.DefaultCredentials;
 
//text/* yerine text/html yazarsak css çekerken 406 hatası alırız
//The remote server returned an error: (406) Not Acceptable. 
//accept kullanmadığımız durumlarda bazı sayfalar 403 hatası verebilir.
//The remote server returned an error: (403) Forbidden.
httpWebRequest.Accept = "text/*";
 
WebResponse webResponse = httpWebRequest.GetResponse();
 
Stream stream = webResponse.GetResponseStream();
StreamReader streamReader = new StreamReader(stream);
string html = streamReader.ReadToEnd();
streamReader.Close();
stream.Close();
webResponse.Close();
 
Console.Write(html);
 
Console.Read();

HttpRequest
wikipedia
MIME types

Be Sociable, Share!

    Category: Csharp - C# - 4 comments »

    4 Responses to “HttpWebRequest ve 403(Forbiden) – 406(Not Acceptable) Hataları”

    1. Nerettin Pamuk

      Çok başarılı tebrikler.

      Bununla beraber UserAgent özelliğinden de bahsedebiliriz. Kimi siteler UserAgent özelliği set olmamış isteklere yanıt vermiyor.

      WebResponse webResponse = httpWebRequest.GetResponse();

      satırından evvel;

      httpWebRequest.UserAgent = “Deneme Istemcisi”;

      yazılabilir.

      “text/*” açıklamasından çok faydalandım, teşekkürler.

    2. şerif özcan

      html parse ederken kullanılabilecek altın değerinde bir bilgi
      teşekkürler serdar

    3. Tamer Özkoç

      Merhabalar. Güzel bir yazı teşekkürler. Veriyi çektikten sonra braketler içindeki wikipedia tag’lerini nasıl iptal edebiliriz ya da o tagları anlaşılabilir bir form’a sokup ekrana getirmek için ne yapmak gerekli?

      İyi çalışmalar.

    4. serdar

      yorumu geç gördüm pardon.

      zannımca wikipedia taglarını temizlemek gibi özel bi hokus pokus yok…

    Back to top