SORU
21 Kasım 2009, CUMARTESİ


Kullanarak WebClient sınıfı ile CookieContainer

Daha önce HttpWebRequest ve HttpWebResponse oturumları ile bir CookieContainer kullandım, ama şimdi, bir WebClient ile kullanmak istiyorum. Anladığım kadarıyla, yerleşik HttpWebRequests (request.CookieContainer) gibi bir yöntem yoktur.Nasıl bir CookieContainer bir WebClient çerezleri toplamak miyim?

5* ben *bu the following sample buldu

public class CookieAwareWebClient : WebClient
{
    private readonly CookieContainer m_container = new CookieContainer();

    protected override WebRequest GetWebRequest(Uri address)
    {
        WebRequest request = base.GetWebRequest(address);
        HttpWebRequest webRequest = request as HttpWebRequest;
        if (webRequest != null)
        {
            webRequest.CookieContainer = m_container;
        }
        return request;
    }
}

Bu en iyi yolu yapmaktır?

CEVAP
22 Kasım 2009, Pazar


Evet. , () IMHO ağır basan GetWebRequest Professional (Service sınırlı functionalty için en iyi çözümdür. Bu seçenek gelmeden önce, HttpWebRequest katmanında neredeyse Professional (Service çünkü gerçekten acı bir sürü kod yazdım, ama ihtiyacım olan şey tam değil, yaptı. Çıkarılması çok daha kolaydır.

Başka bir seçenek düzenli WebClient sınıfını kullanın, ama sadece el Çerez Başlığı doldurmak isteği yapmadan önce ve yanıtı Set-Kurabiye başlığındaki dışarı çekin. Ve bu başlıkları oluşturma ayrıştırma yapmak CookieContainer sınıfı yardımcı yöntem daha vardır: CookieContainer.SetCookies() CookieContainer.GetCookieHeader(), sırasıyla.

Arayan daha kolay oluyor ve ikinci seçenek daha az tekrarlayan kod gerektirir beri eski yaklaşım tercih ederim. Ayrıca, türetme yaklaşımı birden fazla kullanildigini senaryolar için (örneğin çerez, proxy, vb.) çalışır.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • ☆ SUB4SUB CENTER! ☆ spam here

    ☆ SUB4SUB

    22 ŞUBAT 2010
  • Google Developers

    Google Devel

    23 AĞUSTOS 2007
  • Kontor.TV

    Kontor.TV

    14 Mart 2006