【问题标题】:Problems setting proxy on HttpClient在 HttpClient 上设置代理的问题
【发布时间】:2019-06-11 23:29:52
【问题描述】:

在我的 C# 应用程序中,我尝试向防火墙外的外部公司发送 HTTP 请求。当我使用下面的代码时,我收到远程站点强制关闭连接的错误。我假设我在代理设置上做错了,但我不确定是什么。我们的代理不需要身份验证。

var content = new StringContent(JsonConvert.SerializeObject(obj), Encoding.UTF8, "application/json");

using (var handler = new HttpClientHandler()) {
    handler.Proxy = new WebProxy("http://proxy.my.domain.com:911");

    using (var client = new HttpClient(handler: handler, disposeHandler: false)) {
        client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", "...");

        var response = await client.PostAsync($"https://...", content);

我已经打印出发送的编码 JSON,如果我只是通过 curl 手动执行操作,请求会正常进行,所以我确信我的 URL、承载令牌和 JSON 都是正确的。

【问题讨论】:

  • 你的意思是 curl 与代理?
  • 是的。我设置了 http_proxy env var
  • 您不需要为您的 HttpClientHandler 设置 UseProxy = true 吗?
  • 啊!如此简单,@ZagNut。谢谢。

标签: .net http proxy dotnet-httpclient webproxy


【解决方案1】:

正如 cmets 中提到的,代理变量必须设置为 true。我想向有同样问题的其他用户强调这一点。

正如docs 中提到的那样。

我举一个小例子说明如何在 factory 类中使用它:

private HttpClient ClientFactoryV02()
{
    var clientHandler = new HttpClientHandler(){ UseProxy = true};
    clientHandler.Proxy = new WebProxy("address-of-proxy");

    var client = new HttpClient(clientHandler)
    {
        BaseAddress = new Uri("uri");
    }
}
_createHttpClient = () => ClientFactoryV02();

致谢:ZagNut, Ben。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-24
    • 1970-01-01
    • 2017-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多