【发布时间】:2017-04-08 11:16:54
【问题描述】:
我可以使用此代码设置 http 代理:
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);
};
}
}
但不是 socks 代理。任何想法如何做到这一点?或者任何其他(未弃用)支持异步/等待语法的休息客户端?
【问题讨论】:
-
一般来说,任何你可以用 HttpClient 做的事情,你都可以用 Flurl 做。不幸的是,我没有找到任何示例,而且我个人对 SOCKS 也不是很熟悉。也许将其重新定义为 HttpClient 问题,有人会插话。
标签: c# proxy dotnet-httpclient socks flurl