Ich habe den folgenden Code, der erfolgreich funktioniert. Ich kann mir nicht vorstellen, wie ich den Keks aus der Antwort bekomme. Mein Ziel ist, dass ich in der Anfrage Cookies setzen und Cookies aus der Antwort herausholen kann. Gedanken?Kämpfen versucht, Cookie aus der Antwort mit HttpClient in. NET 4.5
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();
}
}
Dies ist die komplette Antwort:
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;
}
Aus Neugier kann ich fragen, warum Sie Cookies auf dem Client lesen möchten? Nach meinem Verständnis werden Cookies zum Senden von Informationen an den Server und nicht zum Zurücksenden von Informationen verwendet. –
Ich verwende den zurückgegebenen Cookie für Aufrufe, die JSON zurückgeben, sodass ich keinen separaten Autorisierungsaufruf für jeden JSON-Aufruf durchführen muss. Das heißt, ich habe ein Anrufprotokoll/Home/GetData, das JSON zurückgibt, aber nur wenn es autorisiert ist. Auf der Client-Anfrage füge ich das Cookie hinzu, so dass/Home/GetData antworten wird. Andernfalls wird "403" nicht autorisiert. –
Den Autorisierungsheader als Standardheader zu setzen, ist fast genauso effektiv und ein bisschen mehr Standard. Es gibt keine Möglichkeit für den Server, den Auth-Header automatisch für den Client festzulegen. –