为什么我的GET请求没有捕获任何cookie?

时间:2018-02-23 10:30:19

标签: c# .net cookies httpwebrequest httpwebresponse

所以我正在尝试使用HttpWebRequests和 System.Net; 命名空间,我使用POSTMAN做了一个GET请求,我有3个cookie,现在我尝试用同样的请求做C#但它似乎根本不返回任何cookie。 或者它可能,但可能是我以不好的方式做这件事。 执行GET请求和捕获cookie的适当方式是什么,以便我以后可以将它们用于POST。

这就是我所拥有的。 似乎cookieContainer一旦完成运行就是空的,我也尝试过调试。

public static void TestGET()
        {
            var request = (HttpWebRequest)WebRequest.Create("https://www.instagram.com/accounts/emailsignup/");
            var cookieContainer = new CookieContainer();

            using (var httpWebResponse = (HttpWebResponse)request.GetResponse())
            {
                using (var streamReader = new StreamReader(httpWebResponse.GetResponseStream()))
                {
                    foreach (Cookie cookie in httpWebResponse.Cookies)
                    {
                        cookieContainer.Add(cookie);
                    }
                }
            }
        }

1 个答案:

答案 0 :(得分:0)

您是否在讨论响应标头中的3个Set-Cookies值?如果是这样,下面的代码将获得这些。

如果你正在使用HttpWebResponse(这就是你正在使用的)

using (var httpWebResponse = (HttpWebResponse)request.GetResponse())
{
     var result = httpWebResponse.Headers["Set-Cookie"];
}

如果你正在使用HttpResponseMessage:

if (httpResponse.Headers.TryGetValues("Set-Cookie", out values))
{
    var session = values;
}

cookie容器为空,因为httpWebResponse.Cookies也是空的。

参考文献:

How to read HTTP header from response using .NET HttpWebRequest API?

How to get an specific header value from the HttpResponseMessage