C# 从 httpwebrequest 获取 cookie

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/16380189/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-10 00:54:01  来源:igfitidea点击:

Get cookies from httpwebrequest

c#cookies

提问by Peter

I'm trying to get all cookies from a website using this code

我正在尝试使用此代码从网站获取所有 cookie

        CookieContainer cookieJar = new CookieContainer();

        var request = (HttpWebRequest)HttpWebRequest.Create("http://www.foetex.dk/ugenstilbud/Pages/Zmags.aspx");
        request.CookieContainer = cookieJar;

        var response = request.GetResponse();

        foreach (Cookie c in cookieJar.GetCookies(request.RequestUri))
        {
            Console.WriteLine("Cookie['" + c.Name + "']: " + c.Value);
        }

        Console.ReadLine();

The only thing i want is to display with console.writeline, but im not getting a single of them.

我唯一想要的是用console.writeline 显示,但我没有得到其中的一个。

采纳答案by Obama

The following example uses the HttpCookie class and its properties to read a cookie with a specific name.

以下示例使用 HttpCookie 类及其属性读取具有特定名称的 cookie。

HttpCookie myCookie = new HttpCookie("MyTestCookie");
myCookie = Request.Cookies["MyTestCookie"];

// Read the cookie information and display it.
if (myCookie != null)
   Response.Write("<p>"+ myCookie.Name + "<p>"+ myCookie.Value);
else
   Response.Write("not found");

Retrieve the values in the HttpWebResponse.Cookiesproperty of HttpWebResponse. In this example, the cookies are retrieved and saved to isolated storage:

检索的值HttpWebResponse.Cookies财产HttpWebResponse。在此示例中,cookie 被检索并保存到独立存储中:

private void ReadCallback(IAsyncResult asynchronousResult)
{
    HttpWebRequest request = (HttpWebRequest)asynchronousResult.AsyncState;
    HttpWebResponse response = (HttpWebResponse)
        request.EndGetResponse(asynchronousResult);
    using (IsolatedStorageFile isf =
        IsolatedStorageFile.GetUserStoreForSite())
    {
        using (IsolatedStorageFileStream isfs = isf.OpenFile("CookieExCookies",
            FileMode.OpenOrCreate, FileAccess.Write))
        {
            using (StreamWriter sw = new StreamWriter(isfs))
            {
                foreach (Cookie cookieValue in response.Cookies)
                {
                    sw.WriteLine("Cookie: " + cookieValue.ToString());
                }
                sw.Close();
            }
        }

    }
}

回答by Mnyikka

//Please use this,
HttpWebRequest request = null;
request = HttpWebRequest.Create(StringURL) as HttpWebRequest;                
HttpWebResponse TheRespone = (HttpWebResponse)request.GetResponse();
String setCookieHeader = TheRespone.Headers[HttpResponseHeader.SetCookie];

回答by Alper Ebicoglu

To get the list of cookies, you can use the below method;

要获取 cookie 列表,您可以使用以下方法;

private async Task<List<Cookie>> GetCookies(string url)
{
    var cookieContainer = new CookieContainer();
    var uri = new Uri(url);
    using (var httpClientHandler = new HttpClientHandler
    {
        CookieContainer = cookieContainer
    })
    {
        using (var httpClient = new HttpClient(httpClientHandler))
        {
            await httpClient.GetAsync(uri);
            return cookieContainer.GetCookies(uri).Cast<Cookie>().ToList();
        }
    }
}