C#模拟登录总结

/// <summary>  登录
        
/// </summary>
        
/// <param name="url"></param>
        
/// <param name="paramList"></param>
        
/// <returns></returns>

        public static string Login(String url, String paramList)
        
{
            HttpWebResponse res 
= null;
            
string strResult = "";
            
try
            
{
                HttpWebRequest req 
= (HttpWebRequest)WebRequest.Create(url);
                req.Method 
= "POST";
                req.ContentType 
= "application/x-www-form-urlencoded";
                req.AllowAutoRedirect 
= false;
                CookieContainer cookieCon 
= new CookieContainer();
                req.CookieContainer 
= cookieCon;
                StringBuilder UrlEncoded 
= new StringBuilder();
                Char[] reserved 
= '?''=''&' };
                
byte[] SomeBytes = null;
                
if (paramList != null)
                
{
                    
int i = 0, j;
                    
while (i < paramList.Length)
                    
{
                        j 
= paramList.IndexOfAny(reserved, i);
                        
if (j == -1)
                        
{
                            UrlEncoded.Append(HttpUtility.UrlEncode(paramList.Substring(i, paramList.Length 
- i)));
                            
break;
                        }

                        UrlEncoded.Append(HttpUtility.UrlEncode(paramList.Substring(i, j 
- i)));
                        UrlEncoded.Append(paramList.Substring(j, 
1));
                        i 
= j + 1;
                    }

                    SomeBytes 
= Encoding.UTF8.GetBytes(UrlEncoded.ToString());
                    req.ContentLength 
= SomeBytes.Length;
                    Stream newStream 
= req.GetRequestStream();
                    newStream.Write(SomeBytes, 
0, SomeBytes.Length);
                    newStream.Close();
                }

                
else
                
{
                    req.ContentLength 
= 0;
                }


                res 
= (HttpWebResponse)req.GetResponse();
                cookieheader 
= req.CookieContainer.GetCookieHeader(new Uri(url));
                Stream ReceiveStream 
= res.GetResponseStream();
                Encoding encode 
= System.Text.Encoding.GetEncoding("GBK");
                StreamReader sr 
= new StreamReader(ReceiveStream, encode);
                Char[] read 
= new Char[256];
                
int count = sr.Read(read, 0256);
                
while (count > 0)
                
{
                    String str 
= new String(read, 0, count);
                    strResult 
+= str;
                    count 
= sr.Read(read, 0256);
                }

            }

            
catch (Exception e)
            
{
                strResult 
= e.ToString();
            }

            
finally
            
{
                
if (res != null)
                
{
                    res.Close();
                }

            }

            
return strResult;
        }

        
/// <summary>  获取页面HTML
        
/// </summary>
        
/// <param name="url"></param>
        
/// <param name="paramList"></param>
        
/// <returns></returns>

        public static string getPage(String url, String paramList)
        
{
            HttpWebRequest req 
= (HttpWebRequest)WebRequest.Create(url);
            req.Headers[
"If-None-Match"= "36d0ed736e88c71:d9f";
            req.Referer 
= "http://website/login.do";
            CookieContainer cookieCon 
= new CookieContainer();
            req.CookieContainer 
= cookieCon;
            req.CookieContainer.SetCookies(
new Uri(url), cookieheader);
            HttpWebResponse res 
= (HttpWebResponse)req.GetResponse();
            StreamReader sr 
= new StreamReader(res.GetResponseStream(),Encoding.Default);
            
string strResult = sr.ReadToEnd();
            sr.Close();
            
return strResult;
        }
调用:

        string postData = "userName=admin&password=pass&area=2006&Submit=%B5%C7+%C2%BC";            
        string strLogin, strResult;
        strLogin = Login("http://website/login.do", postData);

         strResult = getPage("http://website/tohjtree.do", "");
//输出
         this.webBrowser1.Document.Write(strResult);

posted @ 2010-05-06 13:52  与时俱进  阅读(1053)  评论(0编辑  收藏  举报
友情链接:同里老宅院民居客栈