我试图使用C# RestSharp发送GET请求,如下所示。
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
var client = new RestClient("https://www.futureelectronics.cn/p/2052120");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);此代码不适用于超时。
但是python相同的代码运行良好。
import requests
url = "https://www.futureelectronics.cn/p/2052120"
payload={}
headers = {}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)造成这一错误的原因是什么?谢谢。
发布于 2022-03-29 08:37:29
我建议在一个try catch块中试一试,看看是否会产生错误,这可以说明原因。如果你的目标拒绝使用Tls12,我也会建议交换:
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
适用于:
ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3、SecurityProtocolType.Tls、SecurityProtocolType.Tls11、SecurityProtocolType.Tls11、SecurityProtocolType.Tls12;
另一件事,我发现添加: ServicePointManager.ServerCertificateValidationCallback =新的System.Net.Security.RemoteCertificateValidationCallback(AcceptAllCertifications);
也帮我找到了问题。
因此:
ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback(AcceptAllCertifications);
var client = new
RestClient("https://www.futureelectronics.cn/p/2052120");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
try
{
IRestResponse response = client.Execute(request);
}
catch (Exception ex)
{
Console.WriteLine("Caught exception : " + ex.message)
}
Console.WriteLine(response.Content);这能给你带来什么?
发布于 2022-07-18 14:18:40
请尝试在执行行之前添加以下行。它需要TLS12,就像我想的那样;
System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12;https://stackoverflow.com/questions/71656107
复制相似问题