È necessario osservare la richiesta POST tramite il violinista e vedere come è strutturata. per esempio:
{"userName":"you","password":"pwd"}
Di solito, un sito sarebbe riconoscere che si è connessi ricevendo il loro cookie nelle vostre richieste.
HttpClient di default invia i cookie ricevuti da un dominio specifico con ogni richiesta sequenziale a quel dominio (Fino a smaltire che HttpClient esempio)
1) Creare un contenitore di cookie ed essere associato al vostro esempio HttpClient.
2) Utilizzare HttpClient per effettuare la richiesta POST di accesso.
3) Utilizzare HttpClient per effettuare la richiesta di dati GET.
4) Leggere la stringa html dalla risposta.
5) Utilizzare HtmlAgilityPack HtmlDocument per caricare il documento dalla stringa html e non dal Web (come mostrano la maggior parte degli esempi).
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);
}
fonte
2017-08-24 18:19:17
Grazie per il vostro aiuto. ho dato un'occhiata ma ho sicuramente bisogno di usare HTMLAgilityPack a causa della strana codifica sorgente del sito Web in cui mi sto collegando. Ho fatto qualcosa dobut sono un po 'bloccato in seguito: accedo tramite il webbrowser1 control e poi recupero il cookie per quella sessione. Posso applicare quel cookie e aprire una pagina usando quel cookie usando HTMLAgilityPack? – touyets
@ user1842134 - No, l'HAP non funziona e non può gestire i cookie. – Oded
ok grazie mille – touyets