2017-04-08 3 views
0

이 코드와 HTTP 프록시를 설정할 수 있습니다C# HttpClient 또는 socks4/5 proxy?

public class CustomFlurlHttpClient : DefaultHttpClientFactory { 
    public override HttpClient CreateClient(Url url, HttpMessageHandler m) { 
     return base.CreateClient(url, CreateProxyHttpClientHandler("http://192.168.0.103:9090")); 
    } 

    private HttpClientHandler CreateProxyHttpClientHandler(string proxyUrl, string user = "", string passw = "") { 
     NetworkCredential proxyCreds = null; 
     var proxyUri = new Uri(proxyUrl); 
     proxyCreds = new NetworkCredential (user, passw); 
     var proxy = new WebProxy (proxyUri, false) { 
      UseDefaultCredentials = false, 
      Credentials = proxyCreds 
     }; 
     var clientHandler = new HttpClientHandler { 
      UseProxy = true, 
      Proxy = proxy, 
      PreAuthenticate = true, 
      UseDefaultCredentials = false 
     }; 
     if (user != "" && passw != "") { 
      clientHandler.Credentials = new NetworkCredential (user, passw); 
     } 
     return clientHandler; 
    } 
} 
class MainClass { 
    public static void Main (string[] args) { 
     run(); 
     Console.ReadKey(); 
    } 

    async static void run() { 
     using(FlurlClient client = new FlurlClient(c => { c.HttpClientFactory = new CustomFlurlHttpClient();})) { 
      var result = await client.WithUrl("https://www.google.com").GetStringAsync(); 
      Console.WriteLine(result); 
     }; 
    } 
} 

하지만 양말 프록시를. 어떤 아이디어로 그것을 할 수 있습니까? 또는 async/await 구문이 지원되는 다른 (더 이상 사용되지 않는) 나머지 클라이언트를 지원합니까?

+0

일반적으로 아무것도, 당신은 Flurl로 할 수 있습니다. 불행히도 저는 어떤 예제도 찾지 못하고 있으며 양말에 개인적으로 익숙하지 않습니다. 어쩌면 이것을 HttpClient 질문으로 재구성하면 다른 사람이 안으로 전화 할 것입니다. –

답변