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
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.
Nasıl düzgün S4 sınıfı yuvaları Roxyge...
Nasıl dava sınıfı scala bir Numaraland...
Android Uygulama sınıfı veri gerçekleş...
Bir PHP sınıfı içinde 1'den fazla sını...
JUnit sınıfı kullanarak tek test Çalış...