【发布时间】:2019-07-25 12:59:10
【问题描述】:
我正在尝试通过使用 .Net 4.5 的 rest API 获取 JSON
我在代码中尝试了各种方法,但最终我得到了:
"验证失败,因为远程方已关闭 传输流”。
完全相同的 URL 可通过浏览器和 Postman 工作。
到目前为止,我已经尝试使用 .Net 的 WebClient、HttpClient 和 HttpWebRequest,结果相同。我尝试比较 Postman 和我的代码之间的请求(通过 RequestBin),但即使它们相同,我仍然会不断返回:
身份验证失败,因为远程方已关闭 交通
我当前的代码使用的是 HttpWebRequest,但每个解决方案都可以。
我已经使用了所有的安全协议,其中一些会导致 API 返回404,而另一些会导致服务器返回
"验证失败,因为远程方已关闭 传输流”。
这是我当前的代码:
public string GetCityStreets()
{
var url = "https://data.gov.il/api/action/datastore_search?resource_id=a7296d1a-f8c9-4b70-96c2-6ebb4352f8e3&q=26";
var request = (HttpWebRequest)WebRequest.Create(url);
ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 |
SecurityProtocolType.Tls12 |
SecurityProtocolType.Tls11 |
SecurityProtocolType.Tls;
var response = (HttpWebResponse)request.GetResponse();
string jsonResponse;
using (var reader = new StreamReader(response.GetResponseStream()))
{
jsonResponse = reader.ReadToEnd();
}
return jsonResponse;
}
在我当前的代码中,实际发出请求时会引发异常:request.GetResponse()。
本质上,我需要的是从 API 中获取 JSON。
【问题讨论】:
-
你在什么操作系统上运行?
标签: c# ssl httpwebrequest