Je crée une application (.NET 2.0) qui utilise WebClient pour se connecter (downloaddata, etc) vers/depuis un service web http. J'ajoute maintenant un formulaire permettant de gérer l'enregistrement des informations de proxy ou d'utiliser les valeurs par défaut. Je suis un peu confus à propos de certaines choses.Quelle est la relation entre WebProxy et IWebProxy par rapport à WebClient?
D'abord, certaines des méthodes & propriétés disponibles dans WebProxy ou IWebProxy ne sont pas dans les deux. Quelle est la différence ici en ce qui concerne la configuration de WebClient lors de son appel?
Deuxièmement, dois-je dire à WebClient d'utiliser les informations de proxy si je l'ai défini en utilisant une classe WebProxy ou IWebProxy ailleurs? Ou est-il automatiquement hérité? Troisièmement, en donnant à l'utilisateur la possibilité d'utiliser le proxy par défaut (tout ce qui est défini dans IE) et en utilisant les informations d'identification par défaut (je suppose aussi tout ce qui est défini dans IE) sont-elles mutuellement exclusives? Ou vous utilisez uniquement les informations d'identification par défaut lorsque vous avez également utilisé le proxy par défaut?
Cela me fait toute la différence entre WebProxy et IWebProxy. WebRequest.DefaultProxy est une classe IWebPRoxy mais UseDefaultCredentials n'est pas une méthode sur la classe IWebProxy, mais uniquement sur WebProxy et, à son tour, Comment définir le proxy sur WebRequest.DefautlProxy s'il s'agit de deux classes différentes?
Voici ma méthode actuelle de lire les paramètres de formulaire stockés par l'utilisateur - mais je ne sais pas si cela est vrai, ne suffit pas, surpuissant, ou tout simplement mal à cause du mélange de WebProxy et IWebProxy:
private WebProxy _proxyInfo = new WebProxy();
private WebProxy SetProxyInfo()
{
if (UseProxy)
{
if (UseIEProxy)
{
// is doing this enough to set this as default for WebClient?
IWebProxy iProxy = WebRequest.DefaultWebProxy;
if (UseIEProxyCredentials)
{
_proxyInfo.UseDefaultCredentials = true;
}
else
{
// is doing this enough to set this as default credentials for WebClient?
WebRequest.DefaultWebProxy.Credentials = new NetworkCredential(ProxyUsername, ProxyPassword);
}
}
else
{
// is doing this enough to set this as default for WebClient?
WebRequest.DefaultWebProxy = new WebProxy(ProxyAddress, ParseLib.StringToInt(ProxyPort));
if (UseIEProxyCredentials)
{
_proxyInfo.UseDefaultCredentials = true;
}
else
{
WebRequest.DefaultWebProxy.Credentials = new NetworkCredential(ProxyUsername, ProxyPassword);
}
}
}
// Do I need to WebClient to absorb this returned proxy info if I didn't set or use defaults?
return _proxyInfo;
}
Existe-t-il une raison pour non seulement scrapper stocker des informations de proxy spécifiques à l'application et autoriser uniquement l'application à utiliser les informations d'identification par défaut & les informations d'identification de l'utilisateur connecté? Est-ce que cela ne suffira jamais si vous utilisez HTTP?
Partie 2 Question:
Comment puis-je tester si l'instance WebClient utilise ou non les informations de proxy?