.net - 在 HttpClient 上设置代理时出现问题

标签 .net http proxy dotnet-httpclient webproxy

在我的 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、不记名 token 和 JSON 是一切正确。

最佳答案

如评论中所述,代理变量必须设置为 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。

关于.net - 在 HttpClient 上设置代理时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56552847/

相关文章:

c# - 使用类型转换器进行应用程序设置时出错

angular - expressjs与angular2的通信

python - 使 Python 3.x Slack (slackclient) 使用企业代理

java - 如何在 Maven 的 settings.xml 中为 HTTP 和 HTTPS 配置代理服务器?

node.js - Bower 未从 Bower.json 安装

.net - "Cannot start Omnisharp because Mono version >=3.10.0 is required"

c# - 如何在 C# 中访问属性或 const 的 Description 属性?

c# - 如何使用 C# 将转义字符放在特殊字符之前?

java - HTTP 状态 415 – 不支持的媒体类型错误

http - 为什么在http.HandleFunc的回调中使用指针