run method espaƱol create await async c# async-await dotnet-httpclient

method - httpclient c#



Luchando para que la cookie no responda con HttpClient en.net 4.5 (1)

Tengo el siguiente código que funciona correctamente. No puedo entender cómo sacar la cookie de la respuesta. Mi objetivo es que pueda establecer cookies en la solicitud y obtener cookies de la respuesta. ¿Pensamientos?

private async Task<string> Login(string username, string password) { try { string url = "http://app.agelessemail.com/account/login/"; Uri address = new Uri(url); var postData = new List<KeyValuePair<string, string>> { new KeyValuePair<string, string>("username", username), new KeyValuePair<string, string>("password ", password) }; HttpContent content = new FormUrlEncodedContent(postData); var cookieJar = new CookieContainer(); var handler = new HttpClientHandler { CookieContainer = cookieJar, UseCookies = true, UseDefaultCredentials = false }; var client = new HttpClient(handler) { BaseAddress = address }; HttpResponseMessage response = await client.PostAsync(url,content); response.EnsureSuccessStatusCode(); string body = await response.Content.ReadAsStringAsync(); return body; } catch (Exception e) { return e.ToString(); } }

Aquí está la respuesta completa:

HttpResponseMessage response = await client.PostAsync(url,content); response.EnsureSuccessStatusCode(); Uri uri = new Uri(UrlBase); var responseCookies = cookieJar.GetCookies(uri); foreach (Cookie cookie in responseCookies) { string cookieName = cookie.Name; string cookieValue = cookie.Value; }


Para agregar cookies a una solicitud, CookieContainer.Add(uri, cookie) el contenedor de cookies antes de la solicitud con CookieContainer.Add(uri, cookie) . Después de realizar la solicitud, el contenedor de cookies se completará automáticamente con todas las cookies de la respuesta. Luego puede llamar a GetCookies () para recuperarlos.

CookieContainer cookies = new CookieContainer(); HttpClientHandler handler = new HttpClientHandler(); handler.CookieContainer = cookies; HttpClient client = new HttpClient(handler); HttpResponseMessage response = client.GetAsync("http://google.com").Result; Uri uri = new Uri("http://google.com"); IEnumerable<Cookie> responseCookies = cookies.GetCookies(uri).Cast<Cookie>(); foreach (Cookie cookie in responseCookies) Console.WriteLine(cookie.Name + ": " + cookie.Value); Console.ReadLine();