Je travaille dans un bureau où toutes les connexions doivent être établies via un proxy http spécifique. Je dois écrire une application simple pour interroger certaines valeurs d'un serveur Web. C'est facile s'il n'y a pas de proxy. Comment puis-je rendre l'application C # compatible avec le proxy? Comment puis-je établir un type de connexion via un proxy?
Réponses
Trop de publicités?Ceci est facilement réalisé par programme, dans votre code, ou de façon déclarative dans le web.config ou app.config.
Vous pouvez créer par programmation un proxy comme suit:
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("[ultimate destination of your request]");
WebProxy myproxy = new WebProxy("[your proxy address]", [your proxy port number]);
myproxy.BypassProxyOnLocal = false;
request.Proxy = myproxy;
request.Method = "GET";
HttpWebResponse response = (HttpWebResponse) request.GetResponse();
Vous êtes essentiellement de l'affectation de la WebProxy
objet à l' request
de l'objet proxy
de la propriété. Cette request
utilisera alors l' proxy
que vous définissez.
Pour obtenir la même chose de manière déclarative, vous pouvez effectuer les opérations suivantes:
<system.net>
<defaultProxy>
<proxy
proxyaddress="http://[your proxy address and port number]"
bypassonlocal="false"
/>
</defaultProxy>
</system.net>
au sein de votre site web.config ou app.config. Cela définit un proxy par défaut que toutes les requêtes http à utiliser. Selon exactement ce que vous devez atteindre, vous peut ou ne peut pas exiger certains des attributs supplémentaires de la defaultProxy / proxy élément, donc veuillez vous référer à la documentation de ceux-ci.
Si vous utilisez WebClient
, il a un Proxy de la propriété que vous pouvez utiliser.
Comme d'autres l'ont mentionné, il existe plusieurs façons d'automatiser la configuration du proxy détection/d'utilisation
Web.Config:
<system.net>
<defaultProxy enabled="true" useDefaultCredentials="true">
<proxy usesystemdefault="true" bypassonlocal="true" />
</defaultProxy>
</system.net>
Utilisation de la classe WebProxy comme décrit dans cet article.
Vous pouvez également cofigure les paramètres de proxy directement (config ou code) de votre application puis de l'utiliser.
Web.Config:
<system.net>
<defaultProxy>
<proxy
proxyaddress="http://[proxy address]:[proxy port]"
bypassonlocal="false"
/>
</defaultProxy>
</system.net>
Code:
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("url");
WebProxy myproxy = new WebProxy("[proxy address]:[proxy port]", false);
request.Proxy = myproxy;
request.Method = "GET";
HttpWebResponse response = (HttpWebResponse) request.GetResponse();
Si vous voulez que l'application utilise le proxy par défaut du système, ajoutez ceci à votre application.exe.config (où application.exe est le nom de votre application):
<system.net>
<defaultProxy enabled="true" useDefaultCredentials="true">
<proxy usesystemdefault="true" bypassonlocal="true" />
</defaultProxy>
</system.net>
Plus de détails peuvent être trouvés dans l' article de MSDN sur System.Net
Le code de Foole fonctionnait parfaitement pour moi, mais dans .NET 4.0, n'oubliez pas de vérifier si le proxy est NULL, ce qui signifie qu'aucun proxy n'est configuré (en dehors de l'environnement de l'entreprise).
Alors, voici le code qui a résolu mon problème avec notre proxy d'entreprise
WebClient web = new WebClient();
if (web.Proxy != null)
web.Proxy.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials;