Как я могу получить файлы cookie от httpclienthandler.cookiecontainer
-
25-10-2019 - |
Вопрос
Вот код:
public static async Task<string> DownloadPageWithCookiesAsync(string url)
{
HttpClientHandler handler = new HttpClientHandler();
handler.UseDefaultCredentials = true;
handler.AllowAutoRedirect = true;
handler.UseCookies = true;
handler.CookieContainer = new CookieContainer();
HttpClient client = new HttpClient(handler);
HttpResponseMessage response = await client.GetAsync(url);
response.EnsureSuccessStatusCode();
string responseBody = response.Content.ReadAsString();
return responseBody;
}
после client.GetAsync(url);
бежит, handler.CookieContainer
содержит 7 файлов cookie. Как я могу получить к ним доступ?
Решение
int loop1, loop2;
HttpCookieCollection MyCookieColl;
HttpCookie MyCookie;
MyCookieColl = Request.Cookies;
// Capture all cookie names into a string array.
String[] arr1 = MyCookieColl.AllKeys;
// Grab individual cookie objects by cookie name.
for (loop1 = 0; loop1 < arr1.Length; loop1++)
{
MyCookie = MyCookieColl[arr1[loop1]];
Response.Write("Cookie: " + MyCookie.Name + "<br>");
Response.Write ("Secure:" + MyCookie.Secure + "<br>");
//Grab all values for single cookie into an object array.
String[] arr2 = MyCookie.Values.AllKeys;
//Loop through cookie Value collection and print all values.
for (loop2 = 0; loop2 < arr2.Length; loop2++)
{
Response.Write("Value" + loop2 + ": " + Server.HtmlEncode(arr2[loop2]) + "<br>");
}
}
Другие советы
Используйте метод GetCookies's CookieContainer, указав URI, для которого вы хотите файлы cookie. Он возвращает кулинарную пленку, которую вы можете перечислять.
Пытаться:
CookieCollection cookies = handler.CookieContainer.GetCookies(new Uri(/*Uri that the cookies are associated with*/));
for(int i = 0; i < cookies.Count; i++)
{
Cookie c = cookies[i];
//Do stuff with the cookie.
}
Я также можете перевернуть кулинарию с помощью петли Foreach, я полагаю.
CookieCollection cookies = handler.CookieContainer.GetCookies(/*blah-blah*/);
foreach (var cookie in cookies.OfType<System.Net.Cookie>())
{
// process cookies
}
Не связан с StackOverflow