有很多页面是不能够直接访问的,往往是由于session或者cookie控制了,需要用户名和密码登录后才可以看到,怎么用Asp.net程序直接获取需要验证的页面?下面这个函数可以实现:

如何用ASP.net将参数进行Post提交protected static string cookieheader;
如何用ASP.net将参数进行Post提交        public string Login(String url, String paramList) 
如何用ASP.net将参数进行Post提交        {
如何用ASP.net将参数进行Post提交            HttpWebResponse res = null;
如何用ASP.net将参数进行Post提交            string strResult="";
如何用ASP.net将参数进行Post提交
如何用ASP.net将参数进行Post提交            try 
如何用ASP.net将参数进行Post提交            {
如何用ASP.net将参数进行Post提交                HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
如何用ASP.net将参数进行Post提交                req.Method = "POST";
如何用ASP.net将参数进行Post提交                req.ContentType = "application/x-www-form-urlencoded";
如何用ASP.net将参数进行Post提交                req.AllowAutoRedirect = false;
如何用ASP.net将参数进行Post提交                CookieContainer cookieCon = new CookieContainer();
如何用ASP.net将参数进行Post提交                req.CookieContainer = cookieCon;
如何用ASP.net将参数进行Post提交
如何用ASP.net将参数进行Post提交                StringBuilder UrlEncoded = new StringBuilder();
如何用ASP.net将参数进行Post提交                Char[] reserved = {'?', '=', '&'};
如何用ASP.net将参数进行Post提交                byte[] SomeBytes = null;
如何用ASP.net将参数进行Post提交
如何用ASP.net将参数进行Post提交                if (paramList != null) 
如何用ASP.net将参数进行Post提交                {
如何用ASP.net将参数进行Post提交                    int i=0, j;
如何用ASP.net将参数进行Post提交                    while(i
<paramList.Length)
如何用ASP.net将参数进行Post提交                    {
如何用ASP.net将参数进行Post提交                        j
=paramList.IndexOfAny(reserved, i);
如何用ASP.net将参数进行Post提交                        if (j
==-1)
如何用ASP.net将参数进行Post提交                        
{
如何用ASP.net将参数进行Post提交                            UrlEncoded.Append(HttpUtility.UrlEncode(paramList.Substring(i, paramList.Length-i)));
如何用ASP.net将参数进行Post提交                            break;
如何用ASP.net将参数进行Post提交                        }
如何用ASP.net将参数进行Post提交                        UrlEncoded.Append(HttpUtility.UrlEncode(paramList.Substring(i, j-i)));
如何用ASP.net将参数进行Post提交                        UrlEncoded.Append(paramList.Substring(j,1));
如何用ASP.net将参数进行Post提交                        i 
= j+1;
如何用ASP.net将参数进行Post提交                    
}
如何用ASP.net将参数进行Post提交                    SomeBytes 
= Encoding.UTF8.GetBytes(UrlEncoded.ToString());
如何用ASP.net将参数进行Post提交                    
req.ContentLength = SomeBytes.Length;
如何用ASP.net将参数进行Post提交                    
Stream newStream = req.GetRequestStream();
如何用ASP.net将参数进行Post提交                    
newStream.Write(SomeBytes, 0, SomeBytes.Length);
如何用ASP.net将参数进行Post提交                    newStream.Close();
如何用ASP.net将参数进行Post提交                } 
如何用ASP.net将参数进行Post提交                else 
如何用ASP.net将参数进行Post提交                {
如何用ASP.net将参数进行Post提交                    req.ContentLength 
= 0;
如何用ASP.net将参数进行Post提交                
}
如何用ASP.net将参数进行Post提交
如何用ASP.net将参数进行Post提交                res 
= (HttpWebResponse)req.GetResponse();
如何用ASP.net将参数进行Post提交                
cookieheader = req.CookieContainer.GetCookieHeader(new Uri(url));
如何用ASP.net将参数进行Post提交                HttpContext.Current.Application.Lock();
如何用ASP.net将参数进行Post提交                HttpContext.Current.Application["cookieheader"] 
= cookieheader;
如何用ASP.net将参数进行Post提交                
HttpContext.Current.Application.UnLock();
如何用ASP.net将参数进行Post提交
如何用ASP.net将参数进行Post提交                Stream ReceiveStream 
= res.GetResponseStream();
如何用ASP.net将参数进行Post提交                
Encoding encode = System.Text.Encoding.UTF8;
如何用ASP.net将参数进行Post提交                
StreamReader sr = new StreamReader( ReceiveStream, encode );
如何用ASP.net将参数进行Post提交                Char[] read 
= new Char[256];
如何用ASP.net将参数进行Post提交                int count 
= sr.Read( read, 0, 256 );
如何用ASP.net将参数进行Post提交                while (count 
> 0) 
如何用ASP.net将参数进行Post提交                {
如何用ASP.net将参数进行Post提交                    String str = new String(read, 0, count);
如何用ASP.net将参数进行Post提交                    strResult += str;
如何用ASP.net将参数进行Post提交                    count = sr.Read(read, 0, 256);
如何用ASP.net将参数进行Post提交                }
如何用ASP.net将参数进行Post提交            } 
如何用ASP.net将参数进行Post提交            catch(Exception e) 
如何用ASP.net将参数进行Post提交            {
如何用ASP.net将参数进行Post提交                strResult = e.ToString();
如何用ASP.net将参数进行Post提交            } 
如何用ASP.net将参数进行Post提交            finally 
如何用ASP.net将参数进行Post提交            {
如何用ASP.net将参数进行Post提交                if ( res != null ) 
如何用ASP.net将参数进行Post提交                {
如何用ASP.net将参数进行Post提交                    res.Close();
如何用ASP.net将参数进行Post提交                }
如何用ASP.net将参数进行Post提交            }
如何用ASP.net将参数进行Post提交            strResult = strResult.Replace("\r\n","");
如何用ASP.net将参数进行Post提交            return strResult;
如何用ASP.net将参数进行Post提交        }

参数说明:url表示提交的目标页面。
                paramList表示参数列表(格式如:param1=123&parma2=456)
               
使用例子:
 void LoginSample()
  {
   if (HttpContext.Current.Application["cookieheader"] != null)
   {
    cookieheader = (string)HttpContext.Current.Application["cowokieheader"];
   }
   else
   {
    Login("http://www.myule.com/login.asp", "user=likef&password=likef&Next= 登 录 ");
   }

运行上面函数就会产生一个cookie,然后就可以轻而易举的得后需要验证的页面内容了。

相关文章: