Je souhaite ouvrir une page nécessitant une authentification de base. Je souhaite transmettre l'en-tête d'authentification de base au navigateur, ainsi que l'URL.
Comment puis je faire ça?
Via un en-tête, vous pouvez:
string user = "uuuuuuu";
string pass = "ppppppp";
string authHdr = "Authorization: Basic " + Convert.ToBase64String(Encoding.ASCII.GetBytes(user + ":" + pass)) + "\r\n";
webBrowserCtl.Navigate("http://example.com", null, null, authHdr);
étant donné que cela doit être fait sur demande, une option plus simple pour l’authentification de base consiste à:
webBrowserCtl.Navigate("http://uuuuuuu:[email protected]", null, null, authHdr);
Vous pouvez essayer l'ancien format "en URL" qui permettait cela mais ce n'est pas sûr:
http(s)://username:password@server/resource.ext
Cela expose les informations d'identification et IE l'a désactivé , mais cela peut toujours fonctionner dans d'autres navigateurs. Lorsque ce format est utilisé, les informations d'identification sont disponibles pour le navigateur. Il prend la décision d'envoyer l'en-tête d'authentification de base en fonction de la réponse du serveur Web.
Essayez d’utiliser quelque chose comme Watin
Ici vous pouvez trouver de bons articles sur votre blog à propos de Watin
.
Le code ressemble à:
public void SearchForWatiNOnGoogle()
{
using (var browser = new IE("http://www.google.com"))
{
browser.TextField(Find.ByName("q")).TypeText("WatiN");
browser.Button(Find.ByName("btnG")).Click();
}
}
Le contrôle WebBrowser dans .Net utilise Internet Explorer comme navigateur. Par conséquent, si vous voulez bien utiliser IE, voici le code que j'ai écrit. h5url est l'URL que vous souhaitez ouvrir dans une fenêtre. Mon programme ne montre même pas de contrôle de navigateur, il s'agit d'une instance d'Internet Explorer avec la page Web connectée.
using (WebBrowser WebBrowser1 = new WebBrowser())
{
String auth =
System.Convert.ToBase64String(System.Text.Encoding.ASCII.GetBytes(_User + ":" + _Password));
string headers = "Authorization: Basic " + auth + "\r\n";
WebBrowser1.Navigate(h5URL, "_blank", null, headers);
}
Cela ouvre un nouveau navigateur avec tous les en-têtes dont vous avez besoin pour l'authentification, de base ou autre.
Vérifiez d'abord ce code:
Dim result As String
Using wClnt As New Net.WebClient
wClnt.Credentials = New System.Net.NetworkCredential("username", "password")
Using strR As New IO.StreamReader(wClnt.OpenRead("http://ADDRESS_To_READ"))
result = strR.ReadToEnd
End Using
End Using
Si ce n’était pas ce que vous recherchiez, vérifiez ce post, cela peut aider:
Comment me connecter à un site avec WebClient?
Mise à jour :
De cette façon, vous n'ouvrez aucun navigateur. Il suffit de demander l'adresse que vous voulez et de transmettre des informations d'identification.