आपको फिडलर के माध्यम से POST अनुरोध का पालन करना होगा और देखें कि यह कैसे संरचित है। उदाहरण के लिए :
{"userName":"you","password":"pwd"}
आमतौर पर, एक साइट पहचान है कि आप अपने अनुरोध में अपने कुकी प्राप्त द्वारा प्रवेश किया है।
HttpClient डिफ़ॉल्ट रूप से उस डोमेन के लिए प्रत्येक अनुक्रमिक अनुरोध के साथ एक विशिष्ट डोमेन से प्राप्त कुकीज़ भेजता
1) एक कुकी कंटेनर बनाएं (जब तक आप कि HttpClient उदाहरण निपटान) और इसे अपने HttpClient उदाहरण को सौंपा।
2) लॉगिन POST अनुरोध करने के लिए HttpClient का उपयोग करें।
3) डेटा प्राप्त करने के लिए एचटीपी क्लाइंट का उपयोग करें।
4) प्रतिक्रिया से एचटीएमएल स्ट्रिंग पढ़ें।
5) HTML स्ट्रिंग से दस्तावेज़ लोड करने के लिए HtmlAgilityPack HtmlDocument का उपयोग करें और वेब से नहीं (जैसा कि अधिकांश उदाहरण दिखाते हैं)।
string baseUrl = "https://www.yourwebsite.com";
string loginUrl = "/Account/LogOn";
string sessionUrl = "/Data";
var uri = new Uri(baseUrl);
CookieContainer cookies = new CookieContainer();
HttpClientHandler handler = new HttpClientHandler();
handler.CookieContainer = cookies;
using (var client = new HttpClient(handler))
{
client.BaseAddress = uri;
var request = new { userName = "you", password = "pwd" };
var resLogin = client.PostAsJsonAsync(loginUrl,request).Result;
if (resLogin.StatusCode != HttpStatusCode.OK)
Console.WriteLine("Could not login -> StatusCode = " + resLogin.StatusCode);
// see what cookies are returned
IEnumerable<Cookie> responseCookies = cookies.GetCookies(uri).Cast<Cookie>();
foreach (Cookie cookie in responseCookies)
Console.WriteLine(cookie.Name + ": " + cookie.Value);
var resData = client.GetAsync(dataUrl).Result;
if(resSession.StatusCode != HttpStatusCode.OK)
Console.WriteLine("Could not get data html -> StatusCode = " + resSession.StatusCode);
var html = resSession.Content.ReadAsStringAsync().Result;
var doc = new HtmlDocument();
doc.LoadHtml(html);
}
स्रोत
2017-08-24 18:19:17
आपकी सहायता के लिए धन्यवाद। मुझे एक नज़र थी लेकिन मुझे निश्चित रूप से HTML वेबसाइट की अजीब स्रोत कोडिंग के कारण HTMLAgilityPack का उपयोग करने की आवश्यकता है, जिसमें मैं लॉग इन कर रहा हूं। मैंने कुछ किया है, मैं थोड़ी देर बाद अटक गया हूं: मैं teh webbrowser1 controla के माध्यम से लॉगिन करता हूं और फिर उस सत्र के लिए कुकी पुनर्प्राप्त करता हूं। क्या मैं उस कुकी को लागू कर सकता हूं और HTMLAgilityPack का उपयोग कर उस कुकी का उपयोग करके एक पृष्ठ खोल सकता हूं? – touyets
@ user1842134 - नहीं, एचएपी कुकीज़ से निपट नहीं सकता है और नहीं कर सकता है। – Oded
ठीक है बहुत बहुत धन्यवाद – touyets