获取远程网页的内容之二(downmoon原创)

 更新时间:2007年03月06日 00:00:00   作者:  
本文仅针AD下代理上网的情况:
代码如下:
1、定义变量:

 定义变量#region  定义变量 
复制代码 代码如下:

private    string strFireWallIP 
        ...{ 
            get 
            ...{ 
                return System.Configuration.ConfigurationSettings.AppSettings["strFireWallIP"]; 
            } 
        } 
        private    string strFireWallPort 
        ...{ 
            get 
            ...{ 
                return System.Configuration.ConfigurationSettings.AppSettings["strFireWallPort"]; 
            } 
        } 
        private    string strUID 
        ...{ 
            get 
            ...{ 
                return System.Configuration.ConfigurationSettings.AppSettings["strUID"]; 
            } 
        } 
        private    string strPWD 
        ...{ 
            get 
            ...{ 
                return System.Configuration.ConfigurationSettings.AppSettings["strPWD"]; 
            } 
        } 
        private    string strDomain 
        ...{ 
            get 
            ...{ 
                return System.Configuration.ConfigurationSettings.AppSettings["strDomain"]; 
            } 
        } 
        #endregion 



方法:
获取指定远程网页内容 

 
复制代码 代码如下:

/**//// <summary> 
        /// 获取指定远程网页内容 
        /// </summary> 
        /// <param name="strUrl">所要查找的远程网页地址</param> 
        /// <returns></returns> 
        //[WebMethod(Description = "获取指定远程网页内容。")] 
        public string getPageContent(string strUrl) 
        ...{ 
            string strResult        =    ""; 
            this.CurrentUrl    =     strUrl; 
            if(this.CurrentUrl.ToLower().StartsWith("http://")==false) 
                this.CurrentUrl = "http://"+this.CurrentUrl; 
            try 
            ...{ 
                contentBytes    = GetHtmlByte(CurrentUrl); 

            } 
            catch(Exception err) 
            ...{ 
                strResult = "请求错误:" + err.Message; 
            } 
            if(contentBytes==null) 
            ...{ 
                throw new Exception("没有获得返回值"); 
            } 
            strResult        =    getStringFromByteArray(contentBytes,Encoding.UTF8); 
            return strResult; 
        } 




获取指定远程网页元素字节数组::

 获取指定远程网页元素字节数组#region 获取指定远程网页元素字节数组 
      
复制代码 代码如下:

  /**//// <summary> 
        /// 获取指定远程网页元素字节数组 
        /// </summary> 
        /// <param name="strUrl">所要查找的远程网页地址</param> 
        /// <returns></returns> 
        private byte[] GetHtmlByte(string strUrl) 
        ...{ 
            string strPara=(strUrl.IndexOf("?")>=0?strUrl.Substring(strUrl.IndexOf("?")+1):""); 
            System.Text.Encoding encoding    =    new UTF8Encoding(); 
            byte[]  byte1                    =    encoding.GetBytes(strPara); 
            byte[]    byteReturn                =    new byte[10000000]; 
            if(strUrl.Trim().ToLower().StartsWith("http://")==false) 
            ...{ 
                strUrl = "http://"+strUrl; 
            } 
            HttpWebRequest myHttpWebRequest        =    (HttpWebRequest)WebRequest.Create(strUrl); 
            myHttpWebRequest.AllowAutoRedirect    =    true;        
            myHttpWebRequest.KeepAlive            =    true; 
            myHttpWebRequest.UserAgent            =    "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)"; 
            System.Net .WebProxy  proxy = new WebProxy(strFireWallIP+":"+strFireWallPort,true); 
            //proxy=(WebProxy)System.Net.GlobalProxySelection.Select; 
            System.Net.NetworkCredential myCredential = new NetworkCredential(strUID,strPWD,strDomain); 
            proxy.Credentials =myCredential; 
            myHttpWebRequest.Proxy = proxy; 


            HttpWebResponse myHttpWebResponse    =    (HttpWebResponse)myHttpWebRequest.GetResponse(); 
            byte[] bRead    =    new byte[1024]; 
            int lngCount    =    1; 
            int totalLen    =    0; 
            Stream recWeb    =    myHttpWebResponse.GetResponseStream();    
            lngCount        =    recWeb.Read(bRead,0,1024); 
            while(lngCount>0) 
            ...{ 
                Array.Copy(bRead,0,byteReturn,totalLen,lngCount); 
                totalLen    +=    lngCount; 
                lngCount    =    recWeb.Read(bRead,0,1024); 
            } 
            recWeb.Close(); 
            byte[] byteGets =    new byte[totalLen]; 
            Array.Copy(byteReturn,0,byteGets,0,totalLen); 
            byteReturn        =    null; 
            bRead            =    null; 

            return byteGets; 
        } 
        #endregion 


 

转换指定字节数组为字符串::

     转换指定字节数组为字符串#region 转换指定字节数组为字符串 
       
复制代码 代码如下:

 /**//// <summary> 
        /// 转换指定字节数组为字符串 
        /// </summary> 
        /// <param name="ByteGet">字节数组Byte[]</param> 
        /// <param name="myEncoding">编码方式</param> 
        /// <returns></returns> 
        private static string getStringFromByteArray(Byte[] ByteGet,Encoding myEncoding) 
        ...{ 
            int i,lngCount; 
            StringBuilder aTemp = new StringBuilder(10000); 
            lngCount = ByteGet.Length; 
            for(i = 0;i<lngCount;i+= 10000) 
            ...{ 
                aTemp.Append(myEncoding.GetString(ByteGet,i,(lngCount>=i+10000?10000:lngCount - i))); 
            } 
            if(i<=lngCount) 
            ...{ 
                aTemp.Append(myEncoding.GetString(ByteGet,i,(lngCount - i))); 
            } 
            return aTemp.ToString(); 
        } 

        #endregion 




借用这个,写了个抽取中国天气网预报的服务!很爽!

相关文章

  • .Net Core限流的实现示例

    .Net Core限流的实现示例

    限流能够很好的控制住一个客户端访问服务器资源地址的请求次数,本文主要介绍了.Net Core限流的实现示例,感兴趣的可以了解一下
    2021-07-07
  • VS2012/VS2013本地发布网站步骤详解

    VS2012/VS2013本地发布网站步骤详解

    这篇文章主要介绍了VS2012/VS2013本地发布网站的详细步骤,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-04-04
  • asp.net core 修改默认端口的几种方法

    asp.net core 修改默认端口的几种方法

    这篇文章主要介绍了asp.net core 修改默认端口的几种方法,文中讲解非常详细,代码和图片帮助大家更好的理解,感兴趣的朋友可以了解下
    2020-06-06
  • .Net Core和jexus配置HTTPS服务方法

    .Net Core和jexus配置HTTPS服务方法

    下面小编就为大家分享一篇.Net Core和jexus配置HTTPS服务方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-02-02
  • datalist,Repeater和Gridview的区别分析

    datalist,Repeater和Gridview的区别分析

    datalist,Repeater和Gridview的区别分析,需要的朋友可以参考一下
    2013-03-03
  • C# web api返回类型设置为json的两种方法

    C# web api返回类型设置为json的两种方法

    web api写api接口时默认返回的是把你的对象序列化后以XML形式返回,那么怎样才能让其返回为json呢,下面为大家介绍几种不错的方法
    2014-02-02
  • ASP.NET MVC实现区域路由

    ASP.NET MVC实现区域路由

    这篇文章介绍了ASP.NET MVC实现区域路由的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-03-03
  • asp.net core mvc实现伪静态功能

    asp.net core mvc实现伪静态功能

    这篇文章主要为大家详细介绍了asp.net core mvc实现伪静态功能的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-02-02
  • 在dropDownList中实现既能输入一个新值又能实现下拉选的代码

    在dropDownList中实现既能输入一个新值又能实现下拉选的代码

    在dropDownList中实现既能输入一个新值,又能实现下拉选项,想必很多的朋友已经为此功能按耐不住了吧,接下来与大家分享下如何实现,感兴趣的朋友可以参考下哈
    2013-04-04
  • asp.net core中Cookie和Session的实现示例

    asp.net core中Cookie和Session的实现示例

    ASP.NET Core用户会话管理主要通过Cookie和Session实现,本文主要介绍了asp.net core中Cookie和Session的实现示例,具有一定的参考价值,感兴趣的可以了解一下
    2025-01-01

最新评论