मुझे निम्नलिखित कोड मिला है जो सफलतापूर्वक काम करता है। मैं यह पता नहीं लगा सकता कि कुकी को प्रतिक्रिया से बाहर कैसे निकाला जाए। मेरा लक्ष्य यह है कि मैं अनुरोध में कुकीज़ सेट करने और प्रतिक्रिया से कुकीज़ प्राप्त करने में सक्षम होना चाहता हूं। विचार?
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;
}
जिज्ञासा से बाहर, क्या मैं पूछ सकता हूं कि आप क्लाइंट पर कुकीज़ क्यों पढ़ना चाहते हैं? मेरी समझ यह है कि कुकीज़ का उपयोग सर्वर को सूचना भेजने के लिए किया जाता है, न कि सूचना वापस करने के लिए।
—
डारेल मिलर
मैं JSON वापस करने वाले कॉल पर लौटे हुए कुकी का उपयोग करता हूं ताकि मुझे प्रत्येक JSON कॉल के लिए एक अलग प्राधिकरण कॉल न करना पड़े। यह कहना है, मेरे पास कॉल लॉग / होम / गेटडाटा है जो JSON देता है लेकिन केवल अधिकृत होने पर। क्लाइंट के अनुरोध पर, मैं कुकी जोड़ता हूं ताकि / होम / गेटडाटा जवाब देगा। अन्यथा यह "403" अनधिकृत कहेगा।
—
पीटर केल्नर
एक डिफ़ॉल्ट हेडर के रूप में प्राधिकरण हेडर सेट करना लगभग उतना ही प्रभावी और थोड़ा अधिक मानक है। क्लाइंट की ओर से सर्वर के लिए स्वतः हेडर सेट करने का कोई तरीका नहीं है।
—
डारेल मिलर
टिप डारेल के लिए धन्यवाद। क्या आपके पास ऐसे कोई उदाहरण हैं जो asp.net में दिख सकते हैं? मैं अपने मोनोटॉक और अब मेरे विंडोज़ स्टोर ऐप के लिए इससे जूझता रहा। अगर कोई आसान तरीका होता तो मैं खुश होता। यह एक दर्द है, विशेष रूप से async के साथ और अब विंडोज़ स्टोर ऐप्स पर प्रतीक्षा करें।
—
पीटर केल्नर