API отдыха для Blockchain.info - PullRequest
       14

API отдыха для Blockchain.info

0 голосов
/ 17 сентября 2018

Я работаю с 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 (IAsyncResult ar) + 64

[HttpRequestException: при отправке запроса произошла ошибка.]

[AggregateException: произошла одна или несколько ошибок.] System.Threading.Tasks.Task.ThrowIfExceptional (Boolean includeTaskCanceledExceptions) +4324957 System.Threading.Tasks.Task 1.GetResultCore(Boolean waitCompletionNotification) +12846467 System.Threading.Tasks.Task 1.get_Result () + 33

Ответы [ 2 ]

0 голосов
/ 24 ноября 2018

Попробуйте вместо этого

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;
    }
}
0 голосов
/ 08 октября 2018

Ошибка буквально говорит вам о проблеме ...

Не удалось создать безопасный канал 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;
    }
}

Попробуйте!^ (также используется клиентом в выражении using, поскольку вы в настоящее время его не используете)

...