【问题标题】:How to read SESSION_ID in HttpWebResponse.Headers如何在 HttpWebResponse.Headers 中读取 SESSION_ID
【发布时间】:2014-11-11 02:01:28
【问题描述】:

我得到了这样的响应头

日期:格林威治标准时间 2014 年 9 月 17 日星期三 06:13:37 内容类型:文本/html;字符集=utf-8 传输编码:分块 连接:保持活动 设置 Cookie:SESSION_ID=8ffc5f91d4d31130267b3a304acd235d;路径=/;安全的; HttpOnly 设置 Cookie:JSESSIONID=8ffc5f91d4d31130267b3a304acd235d;路径=/;安全的; HttpOnly 设置 Cookie:SESSION_KEY=;路径=/;安全的 过期:星期二,1980 年 1 月 1 日 00:00:00 GMT Pragma:无缓存 缓存控制:无缓存 P3P: policyref="/w3c/p3p.xml", CP="NOI DSP COR NID CURa OUR NOR STA" 内容编码:gzip

我想从 Set-Cookie 中获取 SESSION_ID。 这是我的示例代码:

pl_wResData = (HttpWebResponse)pl_wReqData.GetResponse();

pl_strResList = pl_wResData.Headers["Set-Cookie"].Replace(',', ';').Split(';');

for (int i = 0; i < pl_strResList.Length; i++)
{
    pl_strValueList = pl_strResList[i].Split('=');

    if (pl_strValueList[0].Equals("SESSION_ID"))
    {
        strSID = pl_strValueList[1].ToString();
        break;
    }
}

有谁知道在Set-Cookie 中获取SESSION_ID 的简单方法。 请帮帮我!!

【问题讨论】:

  • 您好,您解决了吗?

标签: c# asp.net session-cookies


【解决方案1】:

我解决了我的问题.... 只需在响应请求数据之前创建 CookieCentainer.... 像这样的示例代码

pl_wReqData.CookieContainer = new CookieContainer();
pl_wResData = (HttpWebRespons)pl_wReqData.GetResponse();

if(pl_wResData.StatusCode.Equals(HttpStatusCode.OK))
{
    strSID = pl_wResData.Cookies["SESSION_ID"].Value;
}

【讨论】:

    【解决方案2】:

    为什么不用cookie collection,像这样:

    foreach (Cookie cookie in pl_wResData.Cookies)
    {
       if (cookie.Name != "SESSION_ID")
          continue;
       strSID = cookie.Value;
    }
    

    【讨论】:

    • 感谢您的回答,但不幸的是我已经尝试过了,它确实有效。 SESSION_ID 是 Set-Cookie 的值,所以我可以使用 cookiecollection 获取它.....
    【解决方案3】:

    查看HttpWebResponseCookies 属性。

    WebRequest.GetResponse返回一个WebResponse,但是如果底层请求是HTTP,则运行时类型是HttpWebResponse,你可以强制转换结果。)

    Cookies 对象是由名称或数字索引的Cookie 对象的集合。

    类似

    ((HttpWebResponse)myResponse).Cookies["SESSION_ID"].Value
    

    应该这样做。

    【讨论】:

    • 感谢您的回答,但不幸的是,我已经尝试过了,但它没有用......当我这样尝试时,我得到'对象引用未设置为实例一个东西。'此异常错误消息....
    • @HojinKim 在这种情况下:未设置哪个对象?您是否在调试器中查看过Cookies 集合? (很可能你没有得到你认为的 cookie。)
    • 嗯....我检查了 Cookie,在这种情况下,此响应标头中未设置任何 Cookie。我只是请求第三方网站并获取此响应标头。所以在这个Header中获取SESSION_ID太复杂了....
    猜你喜欢
    • 2012-01-20
    • 2015-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多