我有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");
任何人都可以帮我理解这个
答案 0 :(得分:0)
许多Web应用程序(如代理Web服务器和多个搜索引擎)都需要访问其他网站的HTML页面。类WebClient
,WebRequest
和WebResponse
通常用于在ASP.NET中执行这些要求。
另一方面,在Windows窗体应用程序中使用WebBrowser
控件来浏览网页和其他启用浏览器的文档。 WebBrowser
提供了许多事件来跟踪数据流程,以及许多用于在HTML元素级别访问和创建新内容的属性和方法。
在下面的链接中,我找到了使用窗口浏览器控件的网站
http://www.codeproject.com/Articles/50544/Using-the-WebBrowser-Control-in-ASP-NET