我正在尝试利用使用 GET 方法的 REST 服务。我正在使用 .Net Framework 4.5.2。我在下面写的只是一个测试,看看我是否真的可以提出请求。如果我将 URL 直接放入浏览器,我会得到 json 格式的字符串数据的良好响应。但是当我尝试运行代码时,我最终得到以下错误:
“底层连接已关闭:发送时发生意外错误。” InnerException = {"无法从传输连接读取数据:远程主机强行关闭了现有连接。"}
我已经尝试将 keepalive 设置为 true 和 false,并且我也尝试使用 WebClient 和 DownloadString ......都导致相同的错误。有没有人知道我错过了什么?或者这是服务器端的问题吗?
Dim script As String = "236"
Dim deploy As String = "1"
Dim compid As String = "915960_SB2"
Dim h As String = "value1"
Dim id As String = "1241389"
Dim status As String = "in freezer"
Dim request As HttpWebRequest
Dim response As HttpWebResponse
Try
'I have removed the real website name from this code.
Dim theurl As String = "https://website/app/site/hosting/scriptlet.nl?script={0}&deploy={1}&compid={2}&h={3}&Id={4}&Status={5}"
Dim url As String = String.Format(theurl, script, deploy, compid, h, id, status)
request = HttpWebRequest.Create(url)
request.Method = "GET"
request.ContentType = "application/json"
'This is where the error occurs
response = request.GetResponse()
Catch ex As Exception
Dim test as string=""
Finally
End Try
Run Code Online (Sandbox Code Playgroud)
我解决了。我偶然发现了以下网站,其他人也遇到了同样的问题。
http://www.avivroth.com/2013/05/02/rest-calls-in-net-c-over-ssl-https/
解决方法是设置安全协议。我只是从 ssl 到 tls11 然后到 tls12 的列表,发现最后一个有效。
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12