您的位置:首页 > 理论基础 > 计算机网络

c#中HttpWebRequest对应302重定向为什么取不到 cookie

2011-04-29 11:55 399 查看
   在默认情况下HttpWebRequest 对象的AllowAutoRedirect 为true 所以是取不到它的cookie

要想获取cookie 只需要把 AllowAutoRedirect 设为false



Stream GetResponse(string url, ref WebHeaderCollection headers, byte[] data, bool onlyHeader)
{
string ret = string.Empty;
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
request.AllowAutoRedirect = false;
request.Method = "GET";
//request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2224.3 Safari/537.36";
//request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8";
if (url.ToLower().Trim().StartsWith("https"))
{
ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);
//request.KeepAlive = false;
//request.ProtocolVersion = HttpVersion.Version10;
}
if (headers != null && headers.Count > 0)
{
foreach (string key in headers)
{
request.Headers.Add(key, headers[key]);
}

}
if (data != null && data.Length > 1)
{
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
using (Stream stream = request.GetRequestStream())
{
stream.Write(data, 0, data.Length);
}

}
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
headers = new WebHeaderCollection();
foreach (string key in response.Headers.Keys)
{
headers.Add(key, response.Headers[key]);
}
MemoryStream ms = new MemoryStream();
if (!onlyHeader)
{
byte[] buffer = new byte[1024 * 1024];

using (Stream sr = response.GetResponseStream())
{
int len = sr.Read(buffer, 0, buffer.Length);
while (len > 0)
{
ms.Write(buffer, 0, len);
len = sr.Read(buffer, 0, buffer.Length);
}
}
ms.Seek(0, SeekOrigin.Begin);
}
response.Close();
return ms;

}
private bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)
{
//直接确认,否则打不开
return true;
}


 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: