원격 웹 페이지의 내용 2 가져오기 (downmoon 오리지널)

6835 단어
이 문서는 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 

방법:
지정한 원격 웹 페이지 내용 가져오기
 
 
  
/**////  
        ///   
        /// 
 
        ///   
        ///  
        //[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 지정한 원격 웹 요소 바이트 그룹 가져오기
      
 
  
  /**////  
        ///   
        /// 
 
        ///   
        ///  
        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 지정된 바이트 배열을 문자열로 변환
       
 
  
 /**////  
        ///   
        /// 
 
        ///  Byte[] 
        ///   
        ///  
        private static string getStringFromByteArray(Byte[] ByteGet,Encoding myEncoding) 
        ...{ 
            int i,lngCount; 
            StringBuilder aTemp = new StringBuilder(10000); 
            lngCount = ByteGet.Length; 
            for(i = 0;i            ...{ 
                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 


이것을 빌려 중국 일기망 예보를 추출하는 서비스를 썼습니다!시원해!

좋은 웹페이지 즐겨찾기