gpt4 book ai didi

c# - RestSharp 忽略 .NET Core 上的系统代理(例如 Fiddler)

转载 作者:太空狗 更新时间:2023-10-29 20:52:40 27 4
gpt4 key购买 nike

我想用Fiddler检查http流量,但是没有抓到任何http流量,我的测试代码:

private static void ByRestSharp()
{
var restClient = new RestClient("https://jsonplaceholder.typicode.com");
var request = new RestRequest("posts", Method.GET);
var response = restClient.Get<List<Post>>(request);
Console.WriteLine("{0} posts return by RestSharp.", response.Data.Count);
}

但是我改用HttpClient后,Fiddler可以抓取http流量,示例代码:

private static void ByHttpClient()
{
var httpClient = new HttpClient();
using (var req = new HttpRequestMessage(HttpMethod.Get, "https://jsonplaceholder.typicode.com/posts"))
using (var resp = httpClient.SendAsync(req).Result)
{
var json = resp.Content.ReadAsStringAsync().Result;
var users = SimpleJson.SimpleJson.DeserializeObject<List<Post>>(json);
Console.WriteLine("{0} posts return by HttpClient.", users.Count);
}
}

这是 RestSharp 还是 Fiddler 的问题?

最佳答案

在我们迁移到 .NET Standard 之前,RestSharp 支持系统代理。然后,我们在 .NET Core 上遇到代理问题,然后使用系统代理被完全删除。我们有一个 issue opened on Github您可以在那里查看进度。

但是,显式设置代理应该适用于完整的 .NET Framework,检查 this issue .

来自问题的代码,已确认有效:

var client = new RestClient("http://www.google.com");
client.Proxy = new WebProxy("127.0.0.1", 8888);
var req = new RestRequest("/", Method.GET);
var resp = client.Execute(req);

2018-05-31 更新:RestSharp 106.3 也在 .NET Core 上自动使用默认代理。使用 Fiddler 测试。

2022-02-23 更新:RestSharp 107 已将 Proxy 属性移至 RestClientOptions:

var options = new RestClientOptions("http://www.google.com") {
Proxy = new WebProxy("127.0.0.1", 8888)
};
var client = new RestClient(options);
var req = new RestRequest("/");
var resp = await client.ExecuteAsync(req);

关于c# - RestSharp 忽略 .NET Core 上的系统代理(例如 Fiddler),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47408423/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com