使用c#登录第三方网站
本文关键字:网站 第三方 登录 使用 | 更新日期: 2023-09-27 18:16:56
我有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");
谁能帮我理解一下这个
许多web应用程序(如代理web服务器和多个搜索引擎)都需要访问其他网站的HTML页面。在ASP.NET中,WebClient
、WebRequest
和WebResponse
类通常用于执行这些要求。
另一方面,WebBrowser
控件在Windows窗体应用程序中用于浏览网页和其他启用浏览器的文档。WebBrowser
提供了许多事件来跟踪数据过程,以及许多属性和方法来访问和创建HTML元素级别的新内容。
在下面的链接中,我发现了一个使用窗口浏览器控件的网站
http://www.codeproject.com/Articles/50544/Using-the-WebBrowser-Control-in-ASP-NET