我在这里做错了什么?
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 时它工作正常
最佳答案
如果客户端和服务器无法就要使用的 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/