HttpWebRequest获取百度的网页

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

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(); 
                  } 
               } 
            }  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值