Frage Schwierigkeiten beim Versuch, die Antwort mit HttpClient in .net 4.5 zu vermeiden


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?

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

Hier ist die vollständige 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;
            }

75
2017-11-10 00:48


Ursprung


Antworten:


Um Cookies zu einer Anfrage hinzuzufügen, befüllen Sie den Cookie-Container vor der Anfrage mit CookieContainer.Add(uri, cookie). Nachdem die Anfrage gestellt wurde, wird der Cookie-Container automatisch mit allen Cookies aus der Antwort gefüllt. Sie können dann GetCookies () aufrufen, um sie zu retreive.

CookieContainer cookies = new CookieContainer();
HttpClientHandler handler = new HttpClientHandler();
handler.CookieContainer = cookies;

HttpClient client = new HttpClient(handler);
HttpResponseMessage response = client.GetAsync("http://google.com").Result;

Uri uri = new Uri("http://google.com");
IEnumerable<Cookie> responseCookies = cookies.GetCookies(uri).Cast<Cookie>();
foreach (Cookie cookie in responseCookies)
    Console.WriteLine(cookie.Name + ": " + cookie.Value);

Console.ReadLine();

132
2017-11-10 01:05