У мене є такий код, який успішно працює. Я не можу зрозуміти, як отримати печиво з відповіді. Моя мета полягає в тому, щоб я хотів мати можливість встановити файли 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;
}
З цікавості я можу запитати, чому ви хочете читати файли cookie на клієнті? Я розумію, що файли cookie використовуються для надсилання інформації на сервер, а не для повернення інформації.
—
Даррел Міллер
Я використовую повернене cookie для дзвінків, які повертають JSON, так що мені не потрібно робити окремий виклик авторизації для кожного дзвінка JSON. Тобто, у мене є журнал викликів / Головна / GetData, який повертає JSON, але лише за умови дозволу. На запит клієнта я додаю файл cookie, щоб / Home / GetData відповів. Інакше воно скаже "403" несанкціоновано.
—
Пітер Кельнер
Встановлення заголовка авторизації як заголовка за замовчуванням майже настільки ж ефективно та трохи стандартніше. Просто сервер не може автоматично встановити заголовок auth від імені клієнта.
—
Даррел Міллер
дякую за пораду Даррел. Чи є у вас приклади того, як це може виглядати на asp.net? Я боровся з цим за свій монотух і тепер додаток для магазину Windows. Я був би радий, якби був простий спосіб. Це біль, особливо з асинхронізацією та очікуванням зараз на додатках Windows Store.
—
Пітер Келнер