广

ASP.NET

  • IOS开发
  • android开发
  • PHP编程
  • JavaScript
  • ASP.NET
  • ASP编程
  • JSP编程
  • Java编程
  • 易语言
  • Ruby编程
  • Perl编程
  • AJAX
  • 正则表达式
  • C语言
  • 编程开发

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

    2018-05-04 21:21:16 次阅读 稿源:互联网
    广告
    本文仅针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 
    借用这个,写了个抽取中国天气网预报的服务!很爽!

    一起学吧部分文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与一起学吧进行文章共享合作。

    广告
    广告
    广告