De la difficulté à essayer d'obtenir des cookies de réponse avec HttpClient dans .net 4.5

J'ai le code suivant qui fonctionne avec succès. Je ne peux pas comprendre comment obtenir le cookie de la réponse. Mon but est que je veux être en mesure de placer des cookies dans la demande et d'obtenir des biscuits de la réponse. Pensées?

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();
    }
}

Voici la réponse:

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;
}
  • Par curiosité, puis-je vous demander pourquoi vous voulez lire des cookies sur le client? Ma compréhension est que les cookies sont utilisés pour envoyer des informations au serveur, pas pour le retour d'information.
  • J'utilise le retour de cookie sur les appels de retour JSON, de sorte que je n'ai pas à faire d'une autorisation distincte à appeler pour chaque appel JSON. C'est-à-dire, j'ai un journal d'appels /Accueil/GetData qui renvoie du JSON, mais seulement si elle est autorisée. Sur la demande du client, j'ai ajouter le cookie de sorte que /Home/GetData répondra. Sinon, il va dire "403" non autorisé.
  • Réglage de l'en-tête d'autorisation par défaut de l'en-tête est presque aussi efficace et un peu plus standard. Il n'y a tout simplement aucun moyen pour le serveur pour configurer l'en-tête d'authentification automatiquement sur le compte du client.
  • merci pour l'astuce Darrel. Avez-vous des exemples de ce qui pourrait ressembler à asp.net? J'ai lutté pour mon monotouch et maintenant mon application windows store. Je serais heureux si il y avait un moyen simple. C'est une douleur, surtout avec async et await maintenant sur les applications du windows store.