首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Cookie在HttpWebRequest GetReponse上丢失/丢失

Cookie在HttpWebRequest GetReponse上丢失/丢失
EN

Stack Overflow用户
提问于 2013-08-01 06:32:39
回答 1查看 1.4K关注 0票数 0

偶尔,我的程序在创建HTTP Post时似乎会失败。我把范围缩小到一块曲奇显然丢了。

一些调查,我缩小了范围

代码语言:javascript
复制
HttpWebResponse response = (HttpWebResponse)http.GetResponse();

奇怪的是,这种情况并不总是发生,通常在第一次运行此方法时,然后一切正常(在我强制重新添加此cookie之后)。

我似乎已经共同破解了一个适用于这种情况的解决方案(但我担心它会打破其他情况,就像通常的破解解决方案一样)。

代码语言:javascript
复制
var cookiesPrePull = cookies.GetCookies(http.RequestUri);
HttpWebResponse response = (HttpWebResponse)http.GetResponse();
foreach (Cookie cookiePre in cookiesPrePull)
{
    bool bExist = false;
    foreach (Cookie cookiePost in cookies.GetCookies(http.RequestUri))
    {
        if (cookiePre.Name == cookiePost.Name)
        {
            bExist = true;
            break;
        }
    }
    if (!bExist)
    {
        cookies.Add(cookiePre);
    }
}

我试图理解的是为什么GetResponse调用会丢弃cookie。在Fiddler中检查时,对此cookie只字不提。唯一的cookie代码是设置两个cookie。一个已经存在,一个不存在。

曲奇肯定还没过期。我对此完全不知所措

干杯

EN

回答 1

Stack Overflow用户

发布于 2013-09-26 23:15:22

尝试使用这样的CookieCollection和CookieContainer来维护您的cookies:

代码语言:javascript
复制
CookieContainer container = new CookieContainer();
CookieCollection cookies = new CookieCollection();

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://somesite.com/login");
request.CookieContainer = container;

HttpWebResponse response = (HttpWebResponse)request.GetResponse();
cookies = response.Cookies; // capture the cookies from the response

request = (HttpWebRequest)WebRequest.Create("http://somesite.com/profile");
request.CookieContainer = container;
request.CookieContainer.Add(cookies); // add cookies from the previous response to the new request

response = (HttpWebResponse)request.GetResponse();
cookies = response.Cookies; // capture the cookies from the response
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17982131

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档