Skip to main content
 首页 » 编程设计

c#之将 CookieContainer 与 WebClient 类一起使用

2024年01月12日28Terrylee

我以前曾将 CookieContainer 与 HttpWebRequest 和 HttpWebResponse session 一起使用,但现在,我想将它与 WebClient 一起使用。据我所知,没有像 HttpWebRequests (request.CookieContainer) 这样的内置方法。 如何从 CookieContainer 中的 WebClient 收集 cookie?

我googled为此,找到了the following sample :

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; 
    } 
} 

这是最好的方法吗?

请您参考如下方法:

 WebClient wb = new WebClient(); 
 wb.Headers.Add(HttpRequestHeader.Cookie, "somecookie"); 

来自评论

如何格式化 cookie 的名称和值来代替“somecookie”?

wb.Headers.Add(HttpRequestHeader.Cookie, "cookiename=cookievalue");  

对于多个 cookie:

wb.Headers.Add(HttpRequestHeader.Cookie,  
              "cookiename1=cookievalue1;" + 
              "cookiename2=cookievalue2");