El accepted answer es la forma correcta de hacer esto en la mayoría de los casos. Sin embargo, hay algunas situaciones en las que desea establecer manualmente el encabezado de la cookie. Normalmente, si configura un encabezado "Cookie", se ignorará, pero eso se debe a que HttpClientHandler
usa de manera predeterminada su propiedad CookieContainer
para las cookies. Si deshabilita eso, estableciendo UseCookies
en false
, puede establecer los encabezados de las cookies manualmente y estos aparecerán en la solicitud, p.
var baseAddress = new Uri("http://example.com");
using (var handler = new HttpClientHandler { UseCookies = false })
using (var client = new HttpClient(handler) { BaseAddress = baseAddress })
{
var message = new HttpRequestMessage(HttpMethod.Get, "/test");
message.Headers.Add("Cookie", "cookie1=value1; cookie2=value2");
var result = await client.SendAsync(message);
result.EnsureSuccessStatusCode();
}
manipulador se puede eliminar de la declaración de uso, se eliminará cuando se elimine el cliente http. – Kimi
Kimi es correcta, pero tampoco debe envolver su HttpClient en un uso. http://aspnetmonsters.com/2016/08/2016-08-27-httpclientwrong/ – AdvancedREI
PRECAUCIÓN: si utiliza solo 1 instancia de HttpClient para realizar varias solicitudes, las cookies que utilizan CookieContainer se almacenarán en caché. Es peligroso para un usuario obtener la cookie de otro usuario. –