获取远程网页的内容

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


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

转载于:https://www.cnblogs.com/yhb199/archive/2008/06/30/1232615.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值