Http介面RestSharp中StatusCode返回0, 但postman獲取應答正常?
阿新 • • 發佈:2020-11-05
我在某個Http介面中使用RestSharp庫,本地使用正常,但伺服器上StatusCode返回0。但本地和伺服器上postman都返回正常。
以下是C#程式碼部分:
`
IRestResponse<T> response; var client = new RestClient(); client.BaseUrl = new Uri(_baseUrlface); client.AddHandler("application/json", new RestSharp.Deserializers.JsonDeserializer()); client.Timeout = 60000; request.AddHeader("Content-Type", "application/json"); response = client.Execute<T>(request); var request = new RestRequest("/face/external/getToken", Method.POST); GetTokenRsp gettokenrsp = new GetTokenRsp(); request.AddHeader("Content-Type", "application/json"); string message = ""; message = JsonTools.ObjectToJson(gettokenreq); request.AddParameter("application/json", message, ParameterType.RequestBody); var response = Execute<PostCreated>(request); logger.Error("StatusCode: " + response.StatusCode.ToString());
`
StackOverflow上有個人提出了相同的問題。
同樣地, 我也在StackOverflow上找到了解決辦法。
簡要地說, 就是增加對TLS1.2的支援:
System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
那麼問題來了,是我本機預設就支援TLS1.2嗎, 是那麼設定的? postman上又怎麼設定呢?
應該是我的本機啟用了TLS1.2支援,而伺服器上沒有啟用TLS1.2的支援,所以出現同樣的程式碼本機沒問題,而伺服器上沒法使用。
Postman裡面預設確實是預設支援TLS1.2的,所以在本地和伺服器端postman都沒有問題。但TLS1.2我在Setting當中沒有看到如何設定或更改成TLS1.1和TLS1.0的。