HtmlAgilityPack y autenticación

c# html-agility-pack networkcredentials

Pregunta

Tengo un método para obtener ids y xpaths si se me da una url particular. ¿Cómo paso el nombre de usuario y la contraseña con la solicitud para poder eliminar una URL que requiere un nombre de usuario y una contraseña?

using HtmlAgilityPack;

_web = new HtmlWeb();

internal Dictionary<string, string> GetidsAndXPaths(string url)
{
    var webidsAndXPaths = new Dictionary<string, string>();
    var doc = _web.Load(url);
    var nodes = doc.DocumentNode.SelectNodes("//*[@id]");
    if (nodes == null) return webidsAndXPaths;
    // code to get all the xpaths and ids

¿Debo usar una solicitud web para obtener la fuente de la página y luego pasar ese archivo al método anterior?

var wc = new WebClient();
wc.Credentials = new NetworkCredential("UserName", "Password");
wc.DownloadFile("http://somewebsite.com/page.aspx", @"C:\localfile.html");

Respuesta aceptada

HtmlWeb.Load tiene una serie de sobrecargas, estas aceptan una instancia de NetworkCredential o pueden pasar un nombre de usuario y contraseña directamente.

Name // Description 
Public method Load(String) //Gets an HTML document from an Internet resource.  
Public method Load(String, String) //Loads an HTML document from an Internet resource.  
Public method Load(String, String, WebProxy, NetworkCredential) //Loads an HTML document from an Internet resource.  
Public method Load(String, String, Int32, String, String) //Loads an HTML document from an Internet resource. 

No es necesario que pase una instancia de WebProxy , o puede pasar la predeterminada del sistema.

Alternativamente, puede conectar el HtmlWeb.PreRequest y configurar las credenciales para la solicitud.

htmlWeb.PreRequest += (request) => {
    request.Credentials = new NetworkCredential(...);
    return true;
};


Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué