【问题标题】:RestSharp ignoring system proxy (for example Fiddler) on .NET CoreRestSharp 忽略 .NET Core 上的系统代理(例如 Fiddler)
【发布时间】:2017-11-21 08:27:35
【问题描述】:

我想用 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 的问题?

【问题讨论】:

    标签: c# .net-core fiddler restsharp dotnet-httpclient


    【解决方案1】:

    在我们迁移到 .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);
    

    【讨论】:

    • 这对我不起作用。代码运行良好,但在 Fiddler 中没有。很确定我的 Fiddler 配置非常基本。有什么想法吗?
    • 不适合我的版本 106.2.2、.NET Standard 2.0.1、Xamarin.Forms 3.0.0
    • @Jam 我用明确指定的代理和默认代理尝试了 106.3,它可以工作。据我所知,默认代理仅在 Windows 上可用。
    • 在 106.3 上没问题。谢谢。
    • ...除非我使用上面的代码手动配置它,否则 Fiddler 中不会显示任何内容。 .NET Core 3.1 和 RestSharp 106.11.4
    猜你喜欢
    • 1970-01-01
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多