使用C#以编程方式登录网页

问题描述 投票:1回答:1

我想登录网页http://abc/mypage/config/login.aspx并获取http://abc/mypage/config/config.aspx页面的html。我已经使用了webrequest并试过但我总是得到登录页面HTML。

WebRequest request = WebRequest.Create("http://abc/mypage/config/login.aspx");
request.Method = "POST";

string postData = "usernameTextBox=myUsername&passwordTextBox=myPassword";
byte[] byteArray = Encoding.UTF8.GetBytes(postData);
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = byteArray.Length;
Stream dataStream = request.GetRequestStream();
dataStream.Write(byteArray, 0, byteArray.Length);
dataStream.Close();
WebResponse response = request.GetResponse();
dataStream = response.GetResponseStream();
StreamReader reader = new StreamReader(dataStream);
string responseFromServer = reader.ReadToEnd();
reader.Close();
dataStream.Close();
response.Close();

我对此请求的标题是:

接受 text / html,application / xhtml + xml,application / xml; q = 0.9,/; q = 0.8 Accept-Encoding gzip,deflate Accept-Language en-US,en; q = 0.5 Connection keep-alive Cookie ASP.NET_SessionId = nyifft45s13wni45bw0qer3z主机 192.168.174.16 Referer http://abc/mypage/config/login.aspx用户代理Mozilla / 5.0(Windows NT 6.1; WOW64; rv:39.0)Gecko / 20100101 Firefox / 39.0

我需要通过这个页面登录并获取config.aspx页面的html。

任何帮助将不胜感激。

谢谢。

c# asp.net webrequest
1个回答
2
投票

我想网站正在使用基于您的代码和aspx页面的表单身份验证。尝试添加cookiecontainer

    Cookiecontainer cookies = new Cookiecontainer();

   //login request to get authentication cookies.
    WebRequest request = WebRequest.Create("http://abc/mypage/config/login.aspx");
    request.Method = "POST";
    request.cookiecontainer = cookies

    //your rest of the code

  //content request to get what you need
  WebRequest request = WebRequest.Create("http://abc/mypage/config/config.aspx");
    request.Method = "POST";
    request.cookiecontainer = cookies

   //same as before

如果通过cookie进行身份验证,您应该得到您需要的内容。

© www.soinside.com 2019 - 2024. All rights reserved.