2017-08-22 2 views
2

J'essaie d'utiliser un HttpClient pour parler à une API derrière un proxy. Mais comme le proxy n'est valide que pour l'environnement actuel, je ne veux pas qu'il soit codé en dur.Faire HttpClient utiliser app.config defaultProxy

C'est ce que je fais actuellement:

public static HttpClient CreateClient() 
{ 
    var cookies = new CookieContainer(); 
    var handler = new HttpClientHandler 
    { 
    CookieContainer = cookies, 
    UseCookies = true, 
    UseDefaultCredentials = false, 
    UseProxy = true, 
    Proxy = new WebProxy("proxy.dev",1234), 
    }; 
    return new HttpClient(handler); 
} 

Voilà ce que je voudrais utiliser:

<system.net> 
    <defaultProxy> 
    <proxy bypassonlocal="true" 
      usesystemdefault="false" 
      proxyaddress="http://proxy.dev:1234" /> 
    </defaultProxy> 
</system.net> 

Est-il possible de définir le proxy dans l'application/web. config et l'utiliser dans mon HttpClient par défaut?

Merci pour votre idée.

Répondre

1

ne jamais utiliser les paramètres hardcoded dans votre application, vous avez App.config pour cela, il suffit d'ajouter vos paramètres sous étiquette appsettings:

<appSettings> 
    <add key="proxyaddress" value="proxy.dev:1234" /> 
    </appSettings> 

et dans votre application de lire cette clé

public static HttpClient CreateClient() 
{ 
    readonly static string[] proxyAddress = ConfigurationManager.AppSettings["proxyaddress"].Split(':'); 
    var cookies = new CookieContainer(); 
    var handler = new HttpClientHandler 
    { 
    CookieContainer = cookies, 
    UseCookies = true, 
    UseDefaultCredentials = false, 
    UseProxy = true, 
    Proxy = new WebProxy(proxyAddress[0],proxyAddress[1]), 
    }; 
    return new HttpClient(handler); 

}

+1

J'apprécierais toujours la réponse à la question de l'affiche originale, concernant web.config defaultProxy. Est-ce que HttpClient peut utiliser ce paramètre? – JohnKoz