在默认情况下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; }