zoukankan      html  css  js  c++  java
  • 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);

  • 相关阅读:
    母版页和相对路径
    回发或回调参数无效
    ASPNETPAGER的使用方法
    关于ID的取法
    JS获取屏幕,浏览器,网页高度宽度
    form配置问题
    checkedListBox
    html标签的赋值与取值
    如何将前台线程改为后台线程
    在线程委托中实现参数的传递
  • 原文地址:https://www.cnblogs.com/top5/p/1728833.html
Copyright © 2011-2022 走看看