HttpClient get请求在HttpResponse中无法获得Location的问题

  1. private static string getPageContent(string tastKeyword)  
  2. {  
  3.     string htmlcontent = "";  
  4.     HttpWebRequest request = null;  
  5.     HttpWebResponse response = null;  
  6.     string gethost = string.Empty;  
  7.     CookieContainer cc = new CookieContainer();  
  8.     string Cookiesstr = string.Empty;  
  9.   
  10.     try  
  11.     {  
  12.   
  13.         //第一次POST请求  
  14.         string post = @"formhash=59f68caf&srchtxt={0}&searchsubmit=yes";//模拟请求数据  
  15.   
  16.         string postdata = string.Format(post, tastKeyword);  
  17.         string LoginUrl = "http://bbs.hc360.com/search.php?mod=forum";  
  18.         request = (HttpWebRequest)WebRequest.Create(LoginUrl);//实例化web访问类  
  19.         request.Method = "POST";//数据提交方式为POST  
  20.         //模拟头  
  21.         request.ContentType = "application/x-www-form-urlencoded";  
  22.         byte[] postdatabytes = Encoding.GetEncoding("gbk").GetBytes(postdata);  
  23.         request.ContentLength = postdatabytes.Length;  
  24.         request.Referer = "http://bbs.hc360.com/search.php?mod=forum";  
  25.         request.AllowAutoRedirect = false;  
  26.         request.CookieContainer = cc;  
  27.         request.KeepAlive = true;  
  28.           
  29.         //提交请求  
  30.         Stream stream;  
  31.         stream = request.GetRequestStream();  
  32.         stream.Write(postdatabytes, 0, postdatabytes.Length);  
  33.         stream.Close();  
  34.         //接收响应  
  35.         response = (HttpWebResponse)request.GetResponse();  
  36.         //保存返回cookie  
  37.         response.Cookies = request.CookieContainer.GetCookies(request.RequestUri);  
  38.         CookieCollection cook = response.Cookies;  
  39.         string strcrook = request.CookieContainer.GetCookieHeader(request.RequestUri);  
  40.         Cookiesstr = strcrook;  
  41.         //取第一次GET跳转地址  
  42.         //StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding("gb2312"));  
  43.         //string content = sr.ReadToEnd();  
  44.         response.Close();  
  45.     }  
  46.     catch (Exception)  
  47.     {  
  48.         //第一次POST出错;  
  49.     }  
  50.     try  
  51.     {  
  52.         string loction = response.Headers["location"];  
  53.         gethost = "http://bbs.hc360.com/" + loction; //第一次GET地址  
  54.         request = (HttpWebRequest)WebRequest.Create(gethost);  
  55.         request.Method = "GET";  
  56.         request.KeepAlive = true;  
  57.         request.Headers.Add("Cookie:" + Cookiesstr);  
  58.         request.CookieContainer = cc;  
  59.         request.AllowAutoRedirect = true;  
  60.         response = (HttpWebResponse)request.GetResponse();  
  61.         //设置cookie     
  62.         Cookiesstr = request.CookieContainer.GetCookieHeader(request.RequestUri);  
  63.         //取再次跳转链接     
  64.         StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding("gbk"));  
  65.         htmlcontent = sr.ReadToEnd();  
  66.         request.Abort();  
  67.         sr.Close();  
  68.         response.Close();  
  69.     }  
  70.     catch (Exception)  
  71.     {  
  72.         //第二次POST出错     
  73.     }  
  74.     return htmlcontent;  
  75. }  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值