Tengo el siguiente código que funciona correctamente. No puedo averiguar cómo sacar la cookie de la respuesta. Mi objetivo es poder 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;
}
c#
async-await
dotnet-httpclient
Peter Kellner
fuente
fuente

Respuestas:
Para agregar cookies a una solicitud, complete el contenedor de cookies antes de la solicitud con
CookieContainer.Add(uri, cookie). Una vez realizada la solicitud, el contenedor de cookies se completará automáticamente con todas las cookies de la respuesta. Luego puede llamar a GetCookies () para recuperarlos.fuente
httpclientse construye a partir de la fábrica httpclient? es decir, método de construcción agregado a services.AddHttpClientExiste una alternativa si no tiene acceso al
HttpClienty no puede inyectar elCookieContainer. Esto funciona en .NET Core 2.2:fuente
Puede obtener fácilmente un valor de cookie con la URL dada.
fuente