vbulletin Http登录

时间:2015-12-12 21:23:50

标签: c# http vbulletin

所以我正在为一个大型网站制作一个小应用程序,但是当他打开我的应用程序时需要对用户进行身份验证,我有代码发送登录请求,但我不确定如何实际检查登录是否成功。< / p>

这是我到目前为止所做的:

 public string Login(string username, string password)
    {
        HttpWebRequest req = (HttpWebRequest)WebRequest.Create(MPGHLogin);
        string cookie = "";
        string values = "vb_login_username=" + username + "&vb_login_password=" + password
                        + "&securitytoken=guest&"
                        + "cookieuser=checked&"
                        + "do=login";
        req.Method = "POST";
        req.ContentType = "application/x-www-form-urlencoded";
        req.ContentLength = values.Length;
        CookieContainer a = new CookieContainer();
        req.CookieContainer = a;

        System.Net.ServicePointManager.Expect100Continue = false;

        using (StreamWriter writer = new StreamWriter(req.GetRequestStream(), System.Text.Encoding.ASCII))
        {
            writer.Write(values);
        }

        HttpWebResponse c = (HttpWebResponse)req.GetResponse();
        foreach (Cookie cook in c.Cookies)
        {
            cookie = cookie + cook.ToString() + ";";
        }



        if (c.StatusCode != HttpStatusCode.OK)
            return "FAILED_CONNECTION";

        return cookie;
    }

但是如何检查身份验证是否成功?

1 个答案:

答案 0 :(得分:0)

对于可能遇到同样问题的其他人,我完全忘记检查respone流以获取登录成功消息,因此以下是完整代码。

 HttpWebRequest req = (HttpWebRequest)WebRequest.Create(MPGHLogin);
                req.AllowAutoRedirect = true;
                string cookie = "";
                string values = "vb_login_username=" + username + "&vb_login_password=" + password
                                + "&securitytoken=guest&"
                                + "cookieuser=checked&"
                                + "do=login";
                req.Method = "POST";
                req.ContentType = "application/x-www-form-urlencoded";
                req.ContentLength = values.Length;
                CookieContainer a = new CookieContainer();
                req.CookieContainer = a;

                System.Net.ServicePointManager.Expect100Continue = false;

                StreamWriter writer = new StreamWriter(req.GetRequestStream(), System.Text.Encoding.ASCII);
                writer.Write(values);
                writer.Close();

                req.Timeout = 5000;
                HttpWebResponse c;
                try {
                    c = (HttpWebResponse)req.GetResponse(); // da response 
                } catch(Exception e)
                {
                    MessageBox.Show(e.Message, "Web Exception");
                    return "WebException";
                }

                foreach (Cookie cook in c.Cookies)
                {
                    cookie = cookie + cook.ToString() + ";";
                }

                Stream resp = c.GetResponseStream();
                StreamReader reader = new StreamReader(resp, Encoding.GetEncoding(c.CharacterSet));
                string response = reader.ReadToEnd();
                reader.Close();
                reader.Dispose();

                if (response.Contains("Thank you for logging in, " + username))
                {
                    c.Dispose();
                    return cookie;
                }
                else
                    return "FAILED_AUTH";