У меня есть следующий код, который успешно работает. Я не могу понять, как вытащить cookie из ответа. Моя цель состоит в том, чтобы иметь возможность устанавливать файлы cookie в запросе и получать файлы cookie из ответа. Мысли?
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();
}
}
Вот полный ответ:
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
Питер Келлнер
источник
источник
Ответы:
Чтобы добавить файлы cookie в запрос, заполните контейнер файлов cookie перед запросом с помощью
CookieContainer.Add(uri, cookie)
. После того, как запрос сделан, контейнер cookie будет автоматически заполнен всеми файлами cookie из ответа. Затем вы можете вызвать GetCookies (), чтобы получить их.источник
httpclient
собраны из фабрики httpclient? ie builder метод добавлен в services.AddHttpClientЕсть альтернатива, если у вас нет доступа к
HttpClient
файлуCookieContainer
. Это работает в .NET Core 2.2:источник
Вы можете легко получить значение cookie с заданным URL.
источник