C#网络通信

来源:互联网 发布:80端口是什么服务 编辑:程序博客网 时间:2024/04/26 06:55
usingSystem; 
usingSystem.IO; 
usingSystem.Net; 
usingSystem.Text; 
usingSystem.Collections.Generic; 
usingSystem.Text.RegularExpressions; 
   
namespacescan 
    publicclass zzHttp 
    
        privateconst string sContentType = "application/x-www-form-urlencoded"
        privateconst string sUserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727)"
          
        publicstatic string Send(stringdata, stringurl) 
        
            returnSend(Encoding.GetEncoding("UTF-8").GetBytes(data), url); 
        
   
        publicstatic string Send(byte[] data, stringurl) 
        
            Stream responseStream; 
            HttpWebRequest request = WebRequest.Create(url) asHttpWebRequest; 
            if(request == null
            
                  
                thrownew ApplicationException(string.Format("Invalid url string: {0}", url)); 
            
            // request.UserAgent = sUserAgent; 
            request.ContentType = sContentType; 
            request.Method = "POST"
            request.ContentLength = data.Length; 
            Stream requestStream = request.GetRequestStream(); 
            requestStream.Write(data, 0, data.Length); 
            requestStream.Close(); 
            try 
            
                responseStream = request.GetResponse().GetResponseStream(); 
            
            catch(Exception exception) 
            
                   
                throwexception; 
            
            stringstr = string.Empty; 
            using(StreamReader reader = newStreamReader(responseStream, Encoding.GetEncoding("UTF-8"))) 
            
                str = reader.ReadToEnd(); 
            
            responseStream.Close(); 
            returnstr; 
        
  
        #region 同步通过POST方式发送数据 
        /// <summary> 
        /// 通过POST方式发送数据 
        /// </summary> 
        /// <param name="Url">url</param> 
        /// <param name="postDataStr">Post数据</param> 
        /// <param name="cookie">Cookie容器</param> 
        /// <returns></returns> 
        publicstring SendDataByPost(stringUrl, stringpostDataStr, refCookieContainer cookie) 
        
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url); 
            if(cookie.Count == 0) 
            
                request.CookieContainer = newCookieContainer(); 
                cookie = request.CookieContainer; 
            
            else 
            
                request.CookieContainer = cookie; 
            
            request.Method = "POST"
            request.ContentType = "application/x-www-form-urlencoded"
            request.ContentLength = postDataStr.Length; 
            //request.Timeout = 1000; 
            //request.ReadWriteTimeout = 3000; 
            Stream myRequestStream = request.GetRequestStream(); 
            StreamWriter myStreamWriter = newStreamWriter(myRequestStream, Encoding.GetEncoding("gb2312")); 
            myStreamWriter.Write(postDataStr); 
            myStreamWriter.Close(); 
            HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 
            Stream myResponseStream = response.GetResponseStream(); 
            StreamReader myStreamReader = newStreamReader(myResponseStream, Encoding.GetEncoding("gb2312")); 
            stringretString = myStreamReader.ReadToEnd(); 
            myStreamReader.Close(); 
            myResponseStream.Close(); 
            returnretString; 
        
  
        #endregion 
        #region 同步通过GET方式发送数据 
        /// <summary> 
        /// 通过GET方式发送数据 
        /// </summary> 
        /// <param name="Url">url</param> 
        /// <param name="postDataStr">GET数据</param> 
        /// <param name="cookie">Cookie容器</param> 
        /// <returns></returns> 
        publicstring SendDataByGET(stringUrl, stringpostDataStr, refCookieContainer cookie) 
        
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url + (postDataStr == """""?") + postDataStr); 
            if(cookie.Count == 0) 
            
                request.CookieContainer = newCookieContainer(); 
                cookie = request.CookieContainer; 
            
            else 
            
                request.CookieContainer = cookie; 
            
            request.Method = "GET"
            request.ContentType = "text/html;charset=UTF-8"
            HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 
            Stream myResponseStream = response.GetResponseStream(); 
            StreamReader myStreamReader = newStreamReader(myResponseStream, Encoding.GetEncoding("utf-8")); 
            stringretString = myStreamReader.ReadToEnd(); 
            myStreamReader.Close(); 
            myResponseStream.Close(); 
            returnretString; 
        
        #endregion 
   
   
   
        publicstring zzget(stringUrl,stringgetdata, stringtype) 
        
            try 
            
                System.Net.WebRequest wReq = System.Net.WebRequest.Create(Url + (getdata == """""?") + getdata); 
                // Get the response instance. 
                wReq.Method = "GET"
                wReq.ContentType = "text/html;charset=UTF-8"
                System.Net.WebResponse wResp = wReq.GetResponse(); 
                System.IO.Stream respStream = wResp.GetResponseStream(); 
                // Dim reader As StreamReader = New StreamReader(respStream) 
                using(System.IO.StreamReader reader = newSystem.IO.StreamReader(respStream, Encoding.GetEncoding(type))) 
                
                    returnreader.ReadToEnd(); 
                
            
            catch(System.Exception ex) 
            
                //errorMsg = ex.Message; 
            
            return""
        
   
        ///<summary> 
        ///采用post发送请求 
        ///</summary> 
        ///<param name="URL">url地址</param> 
        ///<param name="strPostdata">发送的数据</param> 
        ///<returns></returns> 
        publicstring zzpost(stringURL, IDictionary<string, Object> strPostdata, stringstrEncoding) 
        
   
            //IDictionary<string, Object> idc = new Dictionary<string, object>(); 
            StringBuilder data = newStringBuilder(); 
            foreach(KeyValuePair<string, Object> param instrPostdata)  
            
                data.Append(param.Key).Append("="); 
                data.Append(param.Value.ToString()); 
                data.Append("&"); 
            
            data.Remove(data.Length- 1,1); 
            Encoding encoding = Encoding.Default; 
   
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(URL); 
            request.CookieContainer = newCookieContainer();//少了这句就不能登录 
            request.Method = "post"
            request.Accept = "text/html, application/xhtml+xml, */*"
            request.ContentType = "application/x-www-form-urlencoded"
            byte[] buffer = encoding.GetBytes(data.ToString()); 
            request.ContentLength = buffer.Length; 
            request.GetRequestStream().Write(buffer, 0, buffer.Length); 
            /* 
            request.ContentLength = data.Length; 
            Stream myRequestStream = request.GetRequestStream(); 
            StreamWriter myStreamWriter = newStreamWriter(myRequestStream, Encoding.GetEncoding("gb2312")); 
            myStreamWriter.Write(data); 
            myStreamWriter.Close(); 
            */ 
            HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 
            using(StreamReader reader = newStreamReader(response.GetResponseStream(), System.Text.Encoding.GetEncoding(strEncoding))) 
            
                returnreader.ReadToEnd(); 
            
   
        
   
        /// <summary> 
        /// 清除文本中Html的标签 
        /// </summary> 
        /// <param name="Content"></param> 
        /// <returns></returns> 
        publicstatic string ClearHtml(stringContent) 
        
            Content = Zxj_ReplaceHtml("&#[^>]*;""", Content); 
            Content = Zxj_ReplaceHtml("</?marquee[^>]*>""", Content); 
            Content = Zxj_ReplaceHtml("</?object[^>]*>""", Content); 
            Content = Zxj_ReplaceHtml("</?param[^>]*>""", Content); 
            Content = Zxj_ReplaceHtml("</?embed[^>]*>""", Content); 
            Content = Zxj_ReplaceHtml("</?table[^>]*>""", Content); 
            Content = Zxj_ReplaceHtml(" """, Content); 
            Content = Zxj_ReplaceHtml("</?tr[^>]*>""", Content); 
            Content = Zxj_ReplaceHtml("</?th[^>]*>""", Content); 
            Content = Zxj_ReplaceHtml("</?p[^>]*>""", Content); 
            Content = Zxj_ReplaceHtml("</?a[^>]*>""", Content); 
            Content = Zxj_ReplaceHtml("</?img[^>]*>""", Content); 
            Content = Zxj_ReplaceHtml("</?tbody[^>]*>""", Content); 
            Content = Zxj_ReplaceHtml("</?li[^>]*>""", Content); 
            Content = Zxj_ReplaceHtml("</?span[^>]*>""", Content); 
            Content = Zxj_ReplaceHtml("</?div[^>]*>""", Content); 
            Content = Zxj_ReplaceHtml("</?th[^>]*>""", Content); 
            Content = Zxj_ReplaceHtml("</?td[^>]*>""", Content); 
            Content = Zxj_ReplaceHtml("</?script[^>]*>""", Content); 
            Content = Zxj_ReplaceHtml("(javascript|jscript|vbscript|vbs):""", Content); 
            Content = Zxj_ReplaceHtml("on(mouse|exit|error|click|key)""", Content); 
            Content = Zxj_ReplaceHtml("<\\?xml[^>]*>""", Content); 
            Content = Zxj_ReplaceHtml("<\\/?[a-z]+:[^>]*>""", Content); 
            Content = Zxj_ReplaceHtml("</?font[^>]*>""", Content); 
            Content = Zxj_ReplaceHtml("</?b[^>]*>""", Content); 
            Content = Zxj_ReplaceHtml("</?u[^>]*>""", Content); 
            Content = Zxj_ReplaceHtml("</?i[^>]*>""", Content); 
            Content = Zxj_ReplaceHtml("</?strong[^>]*>""", Content); 
            Content = Zxj_ReplaceHtml("</?strong[^>]*>""", Content); 
   
            Content = Zxj_ReplaceHtml(" """, Content); 
            Regex r = newRegex(@"\s+"); 
            Content = r.Replace(Content, ""); 
   
            Content.Trim(); 
            stringclearHtml = Content; 
            returnclearHtml; 
        
   
        /// <summary> 
        /// 清除文本中的Html标签 
        /// </summary> 
        /// <param name="patrn">要替换的标签正则表达式</param> 
        /// <param name="strRep">替换为的内容</param> 
        /// <param name="content">要替换的内容</param> 
        /// <returns></returns> 
        privatestatic string Zxj_ReplaceHtml(stringpatrn, stringstrRep, stringcontent) 
        
            if(string.IsNullOrEmpty(content)) 
            
                content = ""
            
            Regex rgEx = newRegex(patrn, RegexOptions.IgnoreCase); 
            stringstrTxt = rgEx.Replace(content, strRep); 
            returnstrTxt; 
        
   
   
    
}
0 0