gpt4 book ai didi

c# - 使用 C# 中的凭据登录到第三方网站

转载 作者:太空宇宙 更新时间:2023-11-03 13:36:01 26 4
gpt4 key购买 nike

我想使用凭据登录第三方网站。这是我通过 stackoverflow 使用的代码,但它重定向到登录页面我认为 session 没有存储如何存储 session

    //The URL of the Login Form of the website
String urlSignin = "https://www.grouprevmax.com/WebMARDSV2/RevenueCaterSuper/RevenueManager.aspx";

//The action URL of the Login Form of the website on Submit
String urlLogin = "https://www.grouprevmax.com/WebMARDSV2/RevenueCaterSuper/RevenueManager.aspx";

//Initializes the Uri object of the URLs
Uri uriSignin = new Uri(urlSignin);
Uri uriLogin = new Uri(urlLogin);

//Hashtable to store the form details
Hashtable formData = new Hashtable();
formData.Add("UTC", new Hashtable());
formData.Add("txtUserName", new Hashtable());
formData.Add("txtPassword", new Hashtable());

((Hashtable)formData["UTC"])["value"] = -330;
((Hashtable)formData["txtUserName"])["value"] = username;
((Hashtable)formData["txtPassword"])["value"] = password;

//Initializing the data for the post action
String postData = "";

foreach (string name in formData.Keys)
{
postData += "&" + name + "=" + ((Hashtable)formData[name])["value"];
}
postData = postData.Substring(1);

System.Text.ASCIIEncoding encoding = new System.Text.ASCIIEncoding();
byte[] data = encoding.GetBytes(postData);

HttpWebRequest webReq;
HttpWebResponse webResp;

//To store the cookies of the response objects to be used for the next request
CookieContainer cookies = new CookieContainer();

String responseString = "";

try
{
//Getting response for the Signin page
webReq = (HttpWebRequest)WebRequest.Create(urlSignin);
webResp = (HttpWebResponse)webReq.GetResponse();

//Storing response cookies to be used in the next request
cookies.Add(webResp.Cookies);

//Storing ASPSESSION cookie that appears in the Response header Set-Cookie to be used in the next request
string sessionCookie = webResp.Headers["Set-Cookie"];
responseString = new StreamReader(webResp.GetResponseStream()).ReadToEnd();

string respCookie = sessionCookie.Substring(0, sessionCookie.IndexOf(';'));
char[] separator = { '=' };
string[] cookieValues = respCookie.Split(separator);
cookies.Add(new Cookie(cookieValues[0], cookieValues[1], "/", "www.grouprevmax.com"));

//Initializing the request object for log in
webReq = (HttpWebRequest)WebRequest.Create(urlLogin);
webReq.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
webReq.Referer = urlSignin;
webReq.KeepAlive = true;
webReq.Method = "POST";
webReq.ContentType = "application/x-www-form-urlencoded";
webReq.ContentLength = data.Length;
webReq.AllowAutoRedirect = false;
webReq.CookieContainer = cookies;
webReq.Timeout = 30000;
webReq.ReadWriteTimeout = 60000;



//Get the response for the request to log in
//PROBLEM OCCURS HERE - THE CODE DOES NOT EXECUTE FURTHER
webReq.GetRequestStream().Write(data, 0, data.Length);
webReq.GetRequestStream().Close();
webResp = (HttpWebResponse)webReq.GetResponse();
responseString = new StreamReader(webResp.GetResponseStream()).ReadToEnd();

webResp.Close();
return responseString;

最佳答案

您应该能够将 CookieContainer 与您从 webResp 收集的 cookie 一起使用。

cookies.Add(webResp.Cookies);

你不应该处理cookies,因为你低于那个。只需在新请求上设置 CookieContainer 就足够了。

webReq.CookieContainer = cookies;

关于c# - 使用 C# 中的凭据登录到第三方网站,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18693256/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com