如何登录一个网站使用httpwebrequest通过我的web应用程序或通用处理程序和访问内容
本文关键字:应用程序 web 处理 访问 我的 程序 httpwebrequest 登录 何登录 一个 网站 | 更新日期: 2023-09-27 18:03:01
基本上,我正在为我的大学生制作一个聊天应用程序,为此,我必须确保他们是真实的,通过检查他们在UMS(大学管理系统)上的详细信息,并获得他们的基本细节,以便他们真诚地聊天。我几乎完成了我的聊天应用程序,只剩下登录。
所以我想通过我的网站从一个通用的处理程序登录到我的UMS页面。然后导航到它的另一个页面来访问保持会话存活的基本信息。
我做了关于httpwebrequest的研究,但是无法使用我的凭据登录。
https://ums.lpu.in/lpuums(在asp.net中制作)
我尝试了其他帖子的登录代码。
我是这部分的新手,所以请原谅我。如果没有通过定义的API与UMS进行实际的握手,您将最终抓取UMS html,这是由于各种原因造成的。
我建议你阅读一下单点登录(SSO)。
关于SSO和ASP的几篇文章。净,1. Codeproject上2. MSDN3.asp.net论坛
编辑1
虽然,我认为这是一个坏主意,因为你说你没有选择,这里有一个链接,显示如何Html敏捷包可以帮助抓取网页。
注意屏幕抓取的缺点,来自UMS的更改将不会传达给您,并且您将看到您的应用程序突然无法工作。
public string Scrap(string Username, string Password)
{
string Url1 = "https://www.example.com";//first url
string Url2 = "https://www.example.com/login.aspx";//secret url to post request to
//first request
CookieContainer jar = new CookieContainer();
HttpWebRequest request1 = (HttpWebRequest)WebRequest.Create(Url1);
request1.CookieContainer = jar;
//Get the response from the server and save the cookies from the first request..
HttpWebResponse response1 = (HttpWebResponse)request1.GetResponse();
//second request
string postData = "***viewstate here***";//VIEWSTATE
HttpWebRequest request2 = (HttpWebRequest)WebRequest.Create(Url2);
request2.CookieContainer = jar;
request2.KeepAlive = true;
request2.Referer = Url2;
request2.Method = WebRequestMethods.Http.Post;
request2.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
request2.UserAgent = "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.121 Safari/535.2";
request2.ContentType = "application/x-www-form-urlencoded";
request2.AllowWriteStreamBuffering = true;
request2.ProtocolVersion = HttpVersion.Version11;
request2.AllowAutoRedirect = true;
byte[] byteArray = Encoding.ASCII.GetBytes(postData);
request2.ContentLength = byteArray.Length;
Stream newStream = request2.GetRequestStream(); //open connection
newStream.Write(byteArray, 0, byteArray.Length); // Send the data.
newStream.Close();
HttpWebResponse response2 = (HttpWebResponse)request2.GetResponse();
using (StreamReader sr = new StreamReader(response2.GetResponseStream()))
{
responseData = sr.ReadToEnd();
}
return responseData;
}
这是为我工作的代码,任何人都可以添加那里的链接和视图状态为asp.net网站报废,你需要照顾的cookie了。对于其他网站(非asp.net),他们不需要viewstate。使用fiddler查找需要在header和viewstate或cookie中添加的内容。希望这有助于如果有人有问题。:)