API отдыха для Blockchain.info
Я работаю с asp.net, и я получаю доступ к API blockchain.info для получения текущего значения биткойнов, и я использовал текущий метод для получения того же
public string BtcToDollar(decimal btc)
{
HttpClient client = new HttpClient();
client.BaseAddress = new Uri("http://blockchain.com/");
client.DefaultRequestHeaders.Accept.Add(
new MediaTypeWithQualityHeaderValue("application/json"));
string methodename = "frombtc?currency=USD&value=" + HttpUtility.HtmlEncode(btc * 100000000) ;
var response = client.GetAsync(methodename);
return response.Result.Content.ReadAsStringAsync().Result;
}
это работало нормально, но теперь я получаю erorr
Ошибка сервера в приложении '/' Запрос был прерван: не удалось создать безопасный канал SSL/TLS. Описание: во время выполнения текущего веб-запроса произошло необработанное исключение. Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и о том, где она возникла в коде.
Сведения об исключении: System.Net.WebException: запрос был прерван: не удалось создать безопасный канал SSL/TLS.
Трассировки стека:
[WebException: запрос был прерван: не удалось создать безопасный канал SSL/TLS.] System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult) +606 System.Net.Http.HttpClientHandler.GetResponseCallback(IAsyncRes)
[HttpRequestException: при отправке запроса произошла ошибка.]
[AggregateException: произошла одна или несколько ошибок.] System.Threading.Tasks.Task.ThrowIfExceptional (Boolean includeTaskCanceledExceptions) +4324957 System.Threading.Tasks.Task1.GetResultCore(Boolean waitCompletionNotification) +12846467
System.Threading.Tasks.Task
1.get_Result () +33
2 ответа
Попробуйте это вместо
public string BtcToDollar(decimal btc)
{
using (HttpClient client = new HttpClient())
{
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolTypeExtensions.Tls11 | SecurityProtocolTypeExtensions.Tls12;
client.BaseAddress = new Uri("https://blockchain.com/");
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
string methodename = "frombtc?currency=USD&value=" + HttpUtility.HtmlEncode(btc * 100000000);
var response = client.GetAsync(methodename);
return response.Result.Content.ReadAsStringAsync().Result;
}
}
Ошибка буквально говорит вам о проблеме...
Не удалось создать безопасный канал SSL/TLS
Это означает, что вы не используете HTTPS
схема.
public string BtcToDollar(decimal btc)
{
using (HttpClient client = new HttpClient())
{
client.BaseAddress = new Uri("https://blockchain.com/");
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
string methodename = "frombtc?currency=USD&value=" + HttpUtility.HtmlEncode(btc * 100000000);
var response = client.GetAsync(methodename);
return response.Result.Content.ReadAsStringAsync().Result;
}
}
Попробуй это! ^ (также обернул клиента в использование оператора, поскольку вы в настоящее время не избавляетесь от него)