c# - C# - 在登录页面中使用 HttpWebRequest 和 POST 请求,它重定向到相同的登录页面
问题描述
我发现当我使用这个函数登录并从 coco 变量中获取信息时,我找到了同一个登录页面的内容。这很奇怪,因为当我收到错误的凭据时,我会以错误的凭据返回登录页面。但是当我使用良好的凭据时,我会使用空白表单进入登录页面。
为什么我登录后没有重定向到页面?
private int[] LoginCheck(string TargetWebApp)
{
int[] result = new int[2];
var watch = System.Diagnostics.Stopwatch.StartNew();
try
{
string formUrl = "https://XXXX";
string formParams = string.Format("email={0}&password={1}&submit=Login", "XXXXX", "XXXXXX");
string cookieHeader;
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(formUrl);
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
req.ContentType = "application/x-www-form-urlencoded";
req.AllowAutoRedirect = true;
req.UserAgent = "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.57 Safari/536.11";
req.Method = "POST";
byte[] bytes = Encoding.ASCII.GetBytes(formParams);
req.ContentLength = bytes.Length;
var newStream = req.GetRequestStream();
newStream.Write(bytes, 0, bytes.Length);
newStream.Close();
var resp = req.GetResponse();
var responseStream = resp.GetResponseStream();
var responseReader = new StreamReader(responseStream);
var coco = responseReader.ReadToEnd();
var elapsedMs = watch.ElapsedMilliseconds;
watch.Stop();
Console.WriteLine("Login to XXXXX succeed in {0} Milliseconds", elapsedMs);
cookieHeader = resp.Headers["Set-cookie"];
result[0] = 1;
result[1] = (int)elapsedMs;
}
catch (Exception e)
{
//Any exception will return false.
Console.WriteLine(e.Message);
result[0] = 0;
result[1] = 0;
}
return result;
}
解决方案
推荐阅读
- android - 未调用 Admob 奖励视频广告事件
- ruby - 代理后面的mailgun-ruby
- c# - 如何从 API 显示 JSON 值
- angular - 如何告诉 Jhipster 仅将 ES6 用于 Angular/React 应用程序?
- css - 为什么背景位置不影响我的渐变?
- android - 很长的 gradle 构建时间 - Android
- sql - SQL IF 语句查看今天是否是月底
- c# - System.Data.Spatial DbGeography.Distance 无法始终如一地工作
- javascript - 如何附加
- robotframework - IOError:[Errno 2] 没有这样的文件或目录:u'C:Python27ExcelBook.xls'