使用c#登录第三方网站

时间:2014-08-07 07:22:59

标签: c# asp.net

我有URL

通过查看其源代码,我找到了用于在此URL中登录的表单

<form name="frmLogin" action="j_spring_security_check" method="post"><!-- FORM START -->
                <div class="pod">
                    <div class="single_input">
                        <label class="label" for="j_username">User Name</label>
                        <div class="field">
                            <input type="text" id="j_username" name="j_username" value="">
                        </div>
                    </div>
                    <div class="single_input">
                        <label class="label" for="j_password">Password</label>
                        <div class="field">
                            <input type="password" id="j_password" name="j_password" value="">
                        </div>
                    </div>
                    <div class="single_input">

                        <div class="field">
                            <a href="externalResetPassword">Forgot Password</a>
                        </div>
                    </div>
                </div>
                <div class="cta center">
                    <input name="btnContinue" type="submit" value="Login" class="btnContinue">
                </div>
            </form>

我的问题是,如何在不使用浏览器的情况下检查我输入的用户名和密码是否正确。我希望我可以使用c#HttpWebRequest

来做到这一点

编辑:我发现一些似乎有用的代码,但我不能正确理解

这是代码

HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create("https://www.fastactportal.com/login");
            req.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705;)";
            req.Method = "POST";
            req.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
            req.Headers.Add("Accept-Language: en-us,en;q=0.5");
            req.Headers.Add("Accept-Encoding: gzip,deflate");
            req.Headers.Add("Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7");
            req.KeepAlive = true;
            req.Headers.Add("Keep-Alive: 300");
            req.Referer = "https://www.fastactportal.com/login";

            req.ContentType = "application/x-www-form-urlencoded";

            String Username = "j_username";
            String PassWord = "j_password";

            StreamWriter sw = new StreamWriter(req.GetRequestStream());
            sw.Write("application=portal&url=http%3A%2F%2Fwww.fastactportal.com%2Fportal%2Fredirect%3Bjsessionid%3D1C568AAA1FB8B5C757CF5F68BE6ECE65%3Ftype%3Dssologin%26url%3D%2Fportal%2Fshow%3Bjsessionid%3D1C568AAA1FB8B5C757CF5F68BE6ECE65%3Fidc%3D1023278&realm=sso&j_username=" + Username + "&j_password=" + PassWord + "&x=16&y=11");
            sw.Close();

            HttpWebResponse response = (HttpWebResponse)req.GetResponse();


            StreamReader reader = new StreamReader(response.GetResponseStream());
            string tmp = reader.ReadToEnd();

            foreach (Cookie cook in response.Cookies)
            {
                tmp += "\n" + cook.Name + ": " + cook.Value;
            }


            Response.Write(tmp);
            Response.End();

这条线非常混乱

sw.Write("application=portal&url=http%3A%2F%2Fwww.fastactportal.com%2Fportal%2Fredirect%3Bjsessionid%3D1C568AAA1FB8B5C757CF5F68BE6ECE65%3Ftype%3Dssologin%26url%3D%2Fportal%2Fshow%3Bjsessionid%3D1C568AAA1FB8B5C757CF5F68BE6ECE65%3Fidc%3D1023278&realm=sso&j_username=" + Username + "&j_password=" + PassWord + "&x=16&y=11");

任何人都可以帮我理解这个

1 个答案:

答案 0 :(得分:0)

许多Web应用程序(如代理Web服务器和多个搜索引擎)都需要访问其他网站的HTML页面。类WebClientWebRequestWebResponse通常用于在ASP.NET中执行这些要求。

另一方面,在Windows窗体应用程序中使用WebBrowser控件来浏览网页和其他启用浏览器的文档。 WebBrowser提供了许多事件来跟踪数据流程,以及许多用于在HTML元素级别访问和创建新内容的属性和方法。

在下面的链接中,我找到了使用窗口浏览器控件的网站

http://www.codeproject.com/Articles/50544/Using-the-WebBrowser-Control-in-ASP-NET