如何登录一个网站使用httpwebrequest通过我的web应用程序或通用处理程序和访问内容

本文关键字:应用程序 web 处理 访问 我的 程序 httpwebrequest 登录 何登录 一个 网站 | 更新日期: 2023-09-27 18:03:01

基本上,我正在为我的大学生制作一个聊天应用程序,为此,我必须确保他们是真实的,通过检查他们在UMS(大学管理系统)上的详细信息,并获得他们的基本细节,以便他们真诚地聊天。我几乎完成了我的聊天应用程序,只剩下登录。

所以我想通过我的网站从一个通用的处理程序登录到我的UMS页面。然后导航到它的另一个页面来访问保持会话存活的基本信息。

我做了关于httpwebrequest的研究,但是无法使用我的凭据登录。

https://ums.lpu.in/lpuums(在asp.net中制作)

我尝试了其他帖子的登录代码。

我是这部分的新手,所以请原谅我。

如何登录一个网站使用httpwebrequest通过我的web应用程序或通用处理程序和访问内容

如果没有通过定义的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中添加的内容。希望这有助于如果有人有问题。:)