天天看點

c# 之 URL資源通路

  1. 擷取壓縮文本内容
        public static string GetContent(string url, CookieContainer cookieContainer)
        {
            string content = null;
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
            request.Headers.Set("Accept-Encoding", "gzip, deflate");
            if (cookieContainer != null)
            {
                request.CookieContainer = cookieContainer;
            }
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            Stream responseStream = response.GetResponseStream();
            Stream unzipStream = null;
            StreamReader streamReader = null;
            switch (response.ContentEncoding)
            {
                case "gzip":
                    unzipStream = new GZipStream(responseStream, CompressionMode.Decompress);
                    streamReader = new StreamReader(unzipStream);
                    break;
                case "deflate":
                    unzipStream = new DeflateStream(responseStream, CompressionMode.Decompress);
                    streamReader = new StreamReader(unzipStream);
                    break;
                default:
                    streamReader = new StreamReader(responseStream);
                    break;
            }
            content = streamReader.ReadToEnd();
            streamReader.Close();
            response.Close();
            return content;
        }      
string sLoginURL = string.Format("{0}?username={1}&password={2}", sEXOI_LoginURL,  sUserID, sPassWd);
HttpWebRequest requestLogin = (HttpWebRequest)WebRequest.Create(sLoginURL);
requestLogin.CookieContainer = new CookieContainer();
requestLogin.AllowAutoRedirect = false;
HttpWebResponse responseLogin = (HttpWebResponse)requestLogin.GetResponse();
_cookie = responseLogin.Headers.Get("Set-Cookie");
_authUri = requestLogin.RequestUri;
responseLogin.Close();      
private static string GetContent(string url){        
      Login();        
      CookieContainer cookieContainer = new CookieContainer();           
      cookieContainer.SetCookies(_authUri, _cookie);            
      return ResourceLoader.GetContent(url, cookieContainer);        
}      

繼續閱讀