/**//// <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  


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

posted on 2008-06-30 17:29  yhb199  阅读(366)  评论(1编辑  收藏  举报