0

我正在使用此代码通过 POST 请求登录网站:

HttpWebRequest httpWReq =
    (HttpWebRequest)WebRequest.Create(@"http:\\domain.com\page.asp");

ASCIIEncoding encoding = new ASCIIEncoding();
string postData = "username=user";
postData += "&password=pass";
byte[] data = encoding.GetBytes(postData);

httpWReq.Method = "POST";
httpWReq.ContentType = "application/x-www-form-urlencoded";
httpWReq.ContentLength = data.Length;

using (Stream stream = httpWReq.GetRequestStream())
{
    stream.Write(data,0,data.Length);
}

HttpWebResponse response = (HttpWebResponse)HttpWReq.GetResponse();

string responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();

使用 C# 控制台应用程序创建 HTTP 发布请求并接收响应

它工作正常,我得到 html 字符串作为响应,告诉我我已登录。但现在我想例如在不同的 url 下获取我的个人资料数据。例如,我使用“www.mywebsite.com/login”登录,第二个 url 是“www.mywebsite.com/myprofile”。我可以从第二个网址获取内容吗?当然我只能在登录后才能看到这个配置文件数据。

4

1 回答 1

0

我们可以假设网站使用 cookie 在服务器和 Web 客户端之间传输身份。因此,如果您想通过身份验证 cookie 发出另一个请求,您应该执行以下操作:

此时登录网站时

 HttpWebResponse response = (HttpWebResponse)HttpWReq.GetResponse();

以这种方式保存响应中返回的所有 cookie:

 CookieCollection cookies = response.Cookies;

然后,在发出另一个请求时,附加 cookie:

 HttpWebRequest httpWReq =
       (HttpWebRequest)WebRequest.Create(@"http:\\www.mywebsite.com\myprofile");
 // other staff here 
 ...
 ...

 // then add saved cookies to the request
 httpWReq.CookieContainer.Add(cookies);

 // then continue executing the request
 ...
 ...
于 2013-03-29T15:45:39.180 回答