我有以下问题。当我调用getResponse()方法时,我收到以下错误消息:基础连接已关闭:发送时出现意外错误。 (.Net Framework 4.0)
HttpWebRequest req = (HttpWebRequest)WebRequest.Create("https://www.pegelonline.wsv.de/webservices/rest-api/v2/stations/Bonn.json");
req.Method = WebRequestMethods.Http.Get;
req.Accept = "application/json";
req.ContentType = "application/json; charset=utf-8";
string result = null;
using (HttpWebResponse resp = req.GetResponse() as HttpWebResponse)
{
StreamReader reader = new StreamReader(resp.GetResponseStream());
result = reader.ReadToEnd();}
答案 0 :(得分:0)
将您的框架升级到支持的版本。最早支持的.NET版本是4.5.2,尽管你至少应该选择4.6。
如果您检查该网址,您会看到目标网站使用TLS1.2。 .NET 4.5中添加了TLS1.2支持。它成为4.6的默认值。 .NET 4.0只是不支持TLS1.2
在不使用TLS1.2作为默认值的.NET版本中,您可以通过设置ServicePointManager.SecurityProtocol设置来请求它:
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
在.NET 4.0中您可以使用hack并安装.NET 4.5.2运行时。 Tls12
值不存在,但您仍可以设置数值:
ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;
我建议不要这样做。 4.0和4.5.2之间没有任何严重的兼容性问题。通过在4.5.2运行时运行4.0应用程序,您将获得所有这些但没有任何好处。