Запрос был прерван: не удалось создать безопасный канал SSL / TLS. при вызове PostAsJsonAsync - PullRequest
0 голосов
/ 17 сентября 2018

Я отправляю запрос на сторонний веб-сайт PostAsJsonAsync, как показано ниже:

var nbParamsJson = Newtonsoft.Json.JsonConvert.SerializeObject(nbParams);
  var httpContent = new StringContent(nbParamsJson);
  try
  {
    var response = await client.PostAsJsonAsync(siteUrl, httpContent);

  }
  catch (Exception exp)
  {

  }

, который выдает исключение: [Запрос был прерван: не удалось создать безопасный канал SSL / TLS.] Я знаю, что мой сайт в тестовой среде не имеет SSL-сертификата и, вероятно, происходит потому, что сторонний веб-сайт имеет SSL-сертификат. Я хочу знать, есть ли способ создать канал SSL без перехода на SSL.

Ответы [ 2 ]

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

Я только что добавил

System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

до PostAsJsonAsync, и это решило мою проблему.

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

Я не уверен в вашей асинхронности, но вот адаптация рабочего кода для отправки данных JSON на сайт SSL, который вы сможете адаптировать к вашему конкретному случаю:

        var baseurl = "https://example.com/api/upload/123";
        var rqst = (HttpWebRequest)WebRequest.Create(baseurl);
        rqst.Method = "PUT";
        rqst.Accept = "application/json";
        var authInfo = "authtoken";
        rqst.Headers["Authorization"] = "Token  " + authInfo;
        rqst.UserAgent = "curl/7.37.0";
        rqst.ContentType = "application/json; charset=utf-8";

        using (var streamWriter = new StreamWriter(rqst.GetRequestStream()))
        {
            streamWriter.Write(GetJsonData());
        }

        try
        {
            var resp = rqst.GetResponse();
            using (var sr = new StreamReader(resp.GetResponseStream() ?? throw new InvalidOperationException()))
            {
                var txt = sr.ReadToEnd();
                textBox1.Text = txt;
            }
        }
        catch (Exception ex)
        {
            textBox1.Text = ex.Message;
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...