Başarıyla çalışan aşağıdaki kodu aldım. Çerezi yanıttan nasıl çıkaracağımı çözemiyorum. Amacım, istekte tanımlama bilgileri ayarlayabilmek ve yanıttan tanımlama bilgileri alabilmek. Düşünceler?
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();
}
}
İşte tam cevap:
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;
}
Merak ettiğim için, müşteride çerezleri neden okumak istediğinizi sorabilir miyim? Anladığım kadarıyla tanımlama bilgileri, bilgi döndürmek için değil sunucuya bilgi göndermek için kullanılır.
—
Darrel Miller
Döndürülen tanımlama bilgisini JSON döndüren çağrılarda kullanıyorum, böylece her JSON çağrısı için ayrı bir yetkilendirme çağrısı yapmak zorunda kalmam. Yani, JSON döndüren bir çağrı günlüğüm var / Home / GetData, ancak yalnızca yetkilendirilmişse. İstemci isteği üzerine, / Home / GetData'nın yanıt vermesi için çerezi ekliyorum. Aksi takdirde "403" yetkisiz diyecektir.
—
Peter Kellner
Yetkilendirme başlığını varsayılan bir başlık olarak ayarlamak neredeyse etkilidir ve biraz daha standarttır. Sunucunun kimlik doğrulama başlığını istemci adına otomatik olarak ayarlamasının hiçbir yolu yoktur.
—
Darrel Miller
Darrel bahşiş için teşekkürler. Asp.net'te neye benzeyebileceğine dair herhangi bir örnek var mı? Monotonluğum için bununla mücadele ettim ve şimdi Windows mağazası uygulamam. Basit bir yolu olsaydı mutlu olurdum. Bu, özellikle zaman uyumsuz olduğunda bir acıdır ve şimdi Windows mağaza uygulamalarında beklemekteyiz.
—
Peter Kellner