设为首页
加入收藏
站内地图
旧版入口
当前位置:首页 > 站长学院 > 网络编程 > ASP.NET

ASP.NET教程之HttpWebRequest获取BaiDu的网页

作者:佚名 出处:网络转载 时间:09-12 点击:

内容载入中...
前天发过这样一篇日志


运行后总是返回403错,这是远程主机强制关闭了连接
按照上文朋友样的评论,用WebRequest改成HttpWebRequest还是出现403
看来的确是BaiDu服务器终止了连接
抓包后发现,请求百度是在Header中有一段Cookie
是不是没有该cookie时baidu就会终止连接?
于是先请求一次news.baidu.com用工具获取它的cookie
在程序中加入该cookie,果然成功!而且未出现过错误
于是,修改了源代码:
code 程序代码

request = (HttpWebRequest)WebRequest.Create(url);
         #region start
         HttpWebResponse response = null;
         try
         {
            try
            {
               response = (HttpWebResponse)request.GetResponse();   //在这里可能出错,因为没有cookie
            }
            catch (WebException exp)
            {
               if (exp.Status == WebExceptionStatus.ProtocolError)
               {
                  HttpWebRequest request_baidu = (HttpWebRequest)WebRequest.Create("http://news.baidu.com/");   //通过访问news.baidu.com获取一个cookie
                  using (HttpWebResponse response_baidu = (HttpWebResponse)request_baidu.GetResponse())
                  {
                     string str = response_baidu.Headers["Set-Cookie"];   
                     baidu_cookie = str.Split(";")[0];     //得到cookie
                     request = (HttpWebRequest)WebRequest.Create(url);
                     request.Headers.Add(HttpRequestHeader.Cookie, baidu_cookie);  //再次Create原始搜索地址,并加入cookie
                     response = (HttpWebResponse)request.GetResponse();
                  }
               }
            }
...................

当然
上面的代码的执行成功并不一定代表是cookie的问题
也许是其它我尚未查出的问题。

baidu挂了,测试也无法进行了~~~~~~~~~~
收藏本文:
】【打印页面】【推荐给朋友】【关闭窗口

站长学院

推荐信息