zoukankan      html  css  js  c++  java
  • 获取远程网页的内容

      /**//// <summary>  
             /// 获取指定远程网页内容  
             /// </summary>  
             /// <param name="strUrl">所要查找的远程网页地址</param>  
             /// <param name="timeout">超时时长设置,一般设置为8000</param>  
             /// <param name="enterType">是否输出换行符,0不输出,1输出文本框换行</param>  
             /// <param name="EnCodeType">编码方式</param>  
             /// <returns></returns>  
             ///   也可考虑 static string  
             public string GetRequestString(string strUrl,int timeout,int enterType,Encoding EnCodeType)  
             ...{  
                 string strResult;  
                 try  
                 ...{  
                     HttpWebRequest myReq = (HttpWebRequest)HttpWebRequest.Create(strUrl) ;  
                     myReq.Timeout = timeout;  
                     HttpWebResponse HttpWResp = (HttpWebResponse)myReq.GetResponse();  
                     Stream myStream = HttpWResp.GetResponseStream () ;  
                     StreamReader sr = new StreamReader(myStream , EnCodeType);  
                     StringBuilder strBuilder = new StringBuilder();  
                     while (-1 != sr.Peek())  
                     ...{  
                         strBuilder.Append(sr.ReadLine());  
                         if(enterType==1)  
                         ...{  
                             strBuilder.Append(" ");  
                         }  
                     }  
                     strResult = strBuilder.ToString();  
                 }  
                 catch(Exception err)  
                 ...{  
                     strResult = "请求错误:" + err.Message;  
                 }  
                 return strResult ;  
             }  
             #endregion


    1、定义变量:
    定义变量#region  定义变量
    [复制此代码]CODE:
    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


    方法:
    获取指定远程网页内容
    [复制此代码]CODE:
    /**//// <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 获取指定远程网页元素字节数组
           [复制此代码]CODE:
       /**//// <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 转换指定字节数组为字符串
            [复制此代码]CODE:
    /**//// <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  


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

  • 相关阅读:
    C#和SqlServer中处理时间格式问题
    ReadOnly之后获取文本框的值
    asp.net给Reaper和GridView添加序号
    SQL点滴31—SQL语句中@@IDENTITY和@@ROWCOUNT区别
    asp.net获取服务器信息
    Repeater嵌套
    开博说明 拓荒者
    Git的深入理解与GitHub托管服务的使用
    Hadoop学习笔记一:单节点安装
    VirtualBox克隆后无法找到网卡的问题
  • 原文地址:https://www.cnblogs.com/yhb199/p/1232615.html
Copyright © 2011-2022 走看看