C# GET方式获取网页的COOKIES

lazyjj 2010-07-21 04:45:17
public static string SendDataByGET(string Url, string postDataStr, ref CookieContainer cookie)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url + (postDataStr == "" ? "" : "?") + postDataStr);
if (cookie.Count == 0)
{
request.CookieContainer = new CookieContainer();
cookie = request.CookieContainer;
}
else
{
request.CookieContainer = cookie;
}
request.ContentType = "application/x-www-form-urlencoded ";
request.Method = "GET";
request.KeepAlive = true;
request.AllowAutoRedirect = true;

request.Referer = "http://www.flvpro.com/?aff=7884_generic";
request.Accept = "image/gif,image/x-xbitmap,image/jpeg,image/pjpeg,application/x-shockwave-flash,application/vnd.ms-excel,application/vnd.ms-powerpoint,application/msword,*/*";
request.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)";
request.Headers.Add("Accept-Encoding", "gzip, deflate");
request.Headers.Add("Accept-Language", "zh-cn");
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream myResponseStream = response.GetResponseStream();
StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));
string retString = myStreamReader.ReadToEnd();
myStreamReader.Close();
myResponseStream.Close();

return retString;
}

这个方法获取下来的COOKIES 跟我用IE打开这个网页所获取的COOKIES不一致 有达人可以指教吗
因为里面有一个下载链接需要到COOKIES才可以下载
具体是http://www.flvpro.com/?aff=7884_generic 这个页面
下载的链接是http://www.flvpro.com/downloadfile.php?aff=7884_generic&c=n2r4yx3w 如果单纯的GET这个地址
获取不了下载地址 是一个EXE来的 目的就是要下载这个EXE 达人们有办法吗 谢谢 不盛感激
...全文
1409 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
/// <summary>
/// 获取指定网址源码
/// </summary>
/// <param name="url">网址</param>
/// <param name="webCode">网页编码</param>
/// <param name="cookie">网页cookie</param>
/// <param name="startPos">获取网页源码的起始位置</param>
/// <param name="endPos">获取网页源码的终止位置</param>
/// <param name="IsCutnr">是否截取回车换行符,默认为true,截取</param>
/// <param name="referer">是否refererHTTP标头的值</param>
/// <returns></returns>
public string GetHtml(string url, string webCode, CookieContainer cookie, string startPos, string endPos, bool IsCutnr, bool referer)
{
//判断网页编码
Encoding wCode = Encoding.Default;
HttpWebRequest wReq = (HttpWebRequest)WebRequest.Create(@url);
wReq.Accept = "*/*";
wReq.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB6; .NET CLR 2.0.50727; CIBA)";
wReq.Method = "GET";
wReq.ContentType = "application/x-www-form-urlencoded";
wReq.Timeout = 12000;
wReq.CookieContainer = cookie;
if (referer)
{
wReq.Referer = url;
}
wReq.KeepAlive = true;
wReq.UseDefaultCredentials = true;

HttpWebResponse wResp = (HttpWebResponse)wReq.GetResponse();
System.IO.Stream respStream = wResp.GetResponseStream();
string strWebData = "";
if (webCode != string.Empty)
{
try
{
wCode = System.Text.Encoding.GetEncoding(webCode);
}
catch
{
wCode = Encoding.Default;
}
}

System.IO.StreamReader reader;
reader = new System.IO.StreamReader(respStream, wCode);
strWebData = reader.ReadToEnd();
reader.Close();
reader.Dispose();

//去除回车换行符号
if (IsCutnr == true)
{
strWebData = Regex.Replace(strWebData, "([\\r\\n])[\\s]+", "", RegexOptions.IgnoreCase | RegexOptions.Multiline);
strWebData = Regex.Replace(strWebData, "\\n", "", RegexOptions.IgnoreCase | RegexOptions.Multiline);
strWebData = strWebData.Replace("\\r\\n", "");
strWebData = strWebData.Replace("\\\"", "\"");
}

//按照截取网页的起始标志和终止标志进行截取
//如果起始或终止截取标识有一个为空,则不进行截取
if (startPos != "" && endPos != "")
{
string tmp = "" + startPos + @"(?<title>[\s\S]+?)" + endPos + "";
Match m = Regex.Match(strWebData, tmp);
if (m.Success)
{
strWebData = m.Groups["title"].Value;
}
}
return strWebData;
}
fenzhijie 2010-08-27
  • 打赏
  • 举报
回复
不知道楼主的问题解决了没
下面的方法可以用

string url = "http://www.flvpro.com/?aff=7884_generic";
string cookieHeader = "";
HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(url);
myHttpWebRequest.CookieContainer = new CookieContainer();
myHttpWebRequest.CookieContainer.SetCookies(new Uri(url), cookieHeader);
HttpWebResponse myresponse = (HttpWebResponse)myHttpWebRequest.GetResponse();
string cookies = myresponse.Headers["Set-Cookie"];//获取验证码页面的Cookies

wuyq11 2010-07-25
  • 打赏
  • 举报
回复
HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();

CookieCollection myCookieCollection = myHttpWebResponse.Cookies;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("");
request.CookieContainer = new CookieContainer();
HttpWebResponse response = (HttpWebResponse) request.GetResponse();
response.Cookies = request.CookieContainer.GetCookies(request.RequestUri);
foreach (Cookie cook in response.Cookies)
{
}
或CookieContainer myCookieContainer = new CookieContainer();
string cookieStr = webBrowser1.Document.Cookie;
string[] cookstr = cookieStr.Split( '; ');
foreach (string str in cookstr)
{

}
hylf123 2010-07-25
  • 打赏
  • 举报
回复
正好遇到同样的问题,一起顶啊
youth 2010-07-21
  • 打赏
  • 举报
回复
不会,帮你顶下

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧