c# - Http Client 现有连接被远程主机强行关闭

标签 c# httpclient dotnet-httpclient

我在这里做错了什么?

        var formContent = new FormUrlEncodedContent(new[]
            {
            new KeyValuePair<string, string>("mobile_numbers", "5555555555"), 
            new KeyValuePair<string, string>("message", "Whoo hahahahah") 
            });           

        HttpClient client = new HttpClient();
        client.BaseAddress = new Uri("https://api.iwin.co.za");
        client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
        client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", "134134134");
        HttpResponseMessage response = client.PostAsync("iwin/api/v1/messages", formContent).Result;

当我运行上面的代码时,我得到了这个错误:一个现有的连接被远程主机强行关闭了 我检查了几次代码,一切看起来都很好,一些文章表明我遇到的错误是服务器问题,但是当我尝试使用 R-client 时它工作正常

Http request

最佳答案

如果客户端和服务器无法就要使用的 TLS 协议(protocol)版本达成一致,则可能会导致这种情况。

我认为 .Net 4.5.2 和更早版本默认为 v1,如果 v1.2 包含在框架中则停用。 (在 .Net 4.6.* 中,v1.2 是默认值。)

要在 4.5.2 中启用 v1.2,您可以使用:

System.Net.ServicePointManager.SecurityProtocol |= SecurityProtocolType.Tls12;

(我相信这可以为整个应用程序领域启用它?)

无论如何,为我解决了这个问题(针对不同的网站)。

关于c# - Http Client 现有连接被远程主机强行关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44241186/

相关文章:

java - 制作嵌套的 nameValuePairs

c# - HttpClient 302 重定向

.net-4.0 - .net 4.0 和 .net 4.5 中的 HttpClient 有什么区别

c# - 使用自定义 header 的 MVC 重定向

c# - 启动vg dev,是什么语言?

c# - 我应该如何处理此 C# 函数中的异常?

c# - 模拟 HttpMessageHandler 时未调用 SendAsync

c# - 使用 HwndSource 在 Win32 应用程序中托管 WPF UserControl

Angular HttpClient : Post method does not set parameter correctly

java - 在android中设置httpclient超时