两种方法获取远程网页的内容

 

方法一,适用于获取少量数据:

清测试使用发现,这个方法在获取有很多内容的网页时,会出现只获取一部分网页内容,底部内容显示不全的情况

ContractedBlock.gif ExpandedBlockStart.gif Code
        /// <summary>
        
/// 获取远程服务器结果,适用于获取少量内容
        
/// </summary>
        
/// <param name="a_strUrl">远程url地址</param>
        
/// <param name="timeout">超时时间,以毫秒为单位</param>
        
/// <param name="newline">结果是否需要换行</param>
        
/// <returns></returns>
        public static String GetHttp(String a_strUrl, int timeout, bool newline)
        {
            
string strResult="";
            timeout 
= timeout == 0 ? 1000 : timeout;
            
try
            {
                HttpWebRequest myReq 
= (HttpWebRequest)HttpWebRequest.Create(a_strUrl);
                myReq.Timeout 
= timeout;
                HttpWebResponse HttpWResp 
= (HttpWebResponse)myReq.GetResponse();
                Stream myStream 
= HttpWResp.GetResponseStream();
                StreamReader sr 
= new StreamReader(myStream, Encoding.Default);
                StringBuilder strBuilder 
= new StringBuilder();
                
while (-1 != sr.Peek())
                {
                    strBuilder.Append(sr.ReadLine());
                    
if(newline)
                        strBuilder.Append(
"\r\n");
                }

                strResult 
= strBuilder.ToString();
                myReq 
= null;
                HttpWResp.Close();
                myStream.Close();
                myStream.Close();
                sr.Close();
                strBuilder 
= null;
            }
            
catch (Exception exp)
            {
#if DEBUG
                strResult 
= "GetHttp错误:" + exp.Message;
#else
                strResult 
= "time out";
#endif
            }

            
return strResult;
        }


        

 

 方法二,适用于获取大量数据

 

ContractedBlock.gif ExpandedBlockStart.gif Code
        /// <summary>
        
/// 获取远程URL内容,适用于获取大量内容
        
/// </summary>
        
/// <param name="a_strUrl">远程URL地址</param>
        
/// <param name="encodetype">目标URL的编码方式</param>
        
/// <returns></returns>
        public static string GetHttp(String a_strUrl,string encodetype)
        {
            
string result = "";
            
if(encodetype.IsNull())
                encodetype 
= "GB2312";
            WebClient MyWebClient 
= new WebClient();
            MyWebClient.Credentials 
= CredentialCache.DefaultCredentials;       //获取或设置用于对向Internet资源的请求进行身份验证的网络凭据。
            Byte[] pageData = MyWebClient.DownloadData(a_strUrl);

            result 
= Encoding.GetEncoding(encodetype).GetString(pageData);
            
return result;
        }
posted on 2008-12-15 18:25 蔺文龙 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/leadwit/archive/2008/12/15/1355513.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值