c# - 如何使用 Restsharp 连接到 API
问题描述
我正在尝试使用 RestSharp 连接到 API,但是出现以下错误:
连接尝试失败,因为连接的一方在一段时间后没有正确响应,或者连接失败,因为连接的主机没有响应
<ipaddress>:<port>
代码:
var client = new RestClient("https://api.infobip.com/sms/1/text/advanced");
var request = new RestRequest(Method.POST);
request.AddHeader("accept", "application/json");
request.AddHeader("content-type", "application/json");
request.AddHeader("authorization", "Basic " + Base64Encode());
request.AddParameter("application/json", ReturnJsonData(sms), ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
奇怪的是,代码在控制台应用程序中运行良好,但无法在 Web 应用程序中连接。请帮忙。
解决方案
您面临的问题可能不是因为代码,而是由于 TLS。
如果您使用的是 dotnet framework 4.5 及更高版本,请在 Startup.cs 中使用以下代码
public void Configuration(IAppBuilder app) {
System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12;
ConfigureAuth(app);
}
如果您使用 4.5 以下的 .net 框架,请在 Global.asax 中使用以下代码
ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072; //TLS 1.2
ServicePointManager.SecurityProtocol = (SecurityProtocolType)768; //TLS 1.1
推荐阅读
- android - 处理 JobIntentService 和线程休眠
- java - 使用 IntelliJ IDEA 在 Java 类中搜索错误的记录器定义
- java - appium 驱动程序在 URL 中显示错误
- java - java.net.ProtocolException:服务器重定向太多次
- haskell - 从 Haskell 中的数据类型中提取字段
- bash - ANSI C 引号被添加到我的 bash 代码中
- sql - 根据 yyyymmdd 检索上一个 fytd 开始日期和结束日期
- c - 一行中的转换和引用
- java - 将csv拆分为多个列表起诉java代码
- android - Xamarin 表单(Sqlite 错误)