如何在HttpWebResponse.Headers中读取SESSION_ID

本文关键字:读取 SESSION ID Headers HttpWebResponse | 更新日期: 2023-09-27 18:22:12

我得到了类似的响应标头

日期:2014年9月17日星期三06:13:37 GMT内容类型:text/html;charset=utf-8传输编码:分块连接:保持活动设置Cookie:SESSION_ID=8ffc5f91d4d31130267b3a304acd235d;路径=/;保护HttpOnly设置Cookie:JSESSIONID=8ffc5f91d4d31130267b3a304acd235d;路径=/;保护HttpOnly设置Cookie:SSESSION_KEY=;路径=/;保护有效期至:1980年1月1日星期二00:00:00 GMTPragma:没有缓存缓存控制:无缓存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的简单方法吗。请帮帮我!!

如何在HttpWebResponse.Headers中读取SESSION_ID

看看HttpWebResponseCookies属性。

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

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

所以类似的东西

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

应该这样做。

我解决了我的问题。。。。只需在响应请求数据之前创建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;
}

为什么不使用cookie collection,类似这样的东西:

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