Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#使用cookie httprequest访问webclient_C#_Cookies_Httprequest_Webclient - Fatal编程技术网

C#使用cookie httprequest访问webclient

C#使用cookie httprequest访问webclient,c#,cookies,httprequest,webclient,C#,Cookies,Httprequest,Webclient,我通过httprequest和cookie在各种cookiecontanse中登录了该站点。但现在我需要为webclient设置cookie。我用的是电话线 webClient.Headers.Add(HttpRequestHeader.Cookie,cookiecontanse.ToString) 但不是工作。为什么?用法: CookieContainer cookieJar = new CookieContainer(); cookieJar.Add(n

我通过httprequest和cookie在各种cookiecontanse中登录了该站点。但现在我需要为webclient设置cookie。我用的是电话线

 webClient.Headers.Add(HttpRequestHeader.Cookie,cookiecontanse.ToString) 
但不是工作。为什么?

用法:

        CookieContainer cookieJar = new CookieContainer();
        cookieJar.Add(new Cookie("my_cookie", "cookie_value", "/", "mysite"));

        CookieAwareWebClient client = new CookieAwareWebClient(cookieJar);

        string response = client.DownloadString("http://example.com/response_with_cookie_only.php");

您将看到GetWebRequest和GetWebResponse的两个重写方法。可以重写这些方法来处理cookie容器

public class CookieAwareWebClient : WebClient
{
    public CookieContainer CookieContainer { get; set; }
    public Uri Uri { get; set; }

    public CookieAwareWebClient()
        : this(new CookieContainer())
    {
    }

    public CookieAwareWebClient(CookieContainer cookies)
    {
        this.CookieContainer = cookies;
    }

    protected override WebRequest GetWebRequest(Uri address)
    {
        WebRequest request = base.GetWebRequest(address);
        if (request is HttpWebRequest)
        {
            (request as HttpWebRequest).CookieContainer = this.CookieContainer;
        }
        HttpWebRequest httpRequest = (HttpWebRequest)request;
        httpRequest.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;
        return httpRequest;
    }

    protected override WebResponse GetWebResponse(WebRequest request)
    {
        WebResponse response = base.GetWebResponse(request);
        String setCookieHeader = response.Headers[HttpResponseHeader.SetCookie];

        if (setCookieHeader != null)
        {
            //do something if needed to parse out the cookie.
            if (setCookieHeader != null)
            {
                Cookie cookie = new Cookie(); //create cookie
                this.CookieContainer.Add(cookie);
            }
        }
        return response;
    }
}