2016-01-05 4 views
2

У меня есть следующий Curl Call, который работает.Эмуляция Curl --user - insecure in C#

curl --insecure --user [email protected]:password "https://someURL" 

Я не могу на всю жизнь получить HttpWebRequest, чтобы подражать этому.

В настоящее время я пытаюсь

var httpWebRequest = (HttpWebRequest)WebRequest.Create("https://someURL); 
     httpWebRequest.ContentType = "application/json"; 
     httpWebRequest.Accept = "*/*"; 
     httpWebRequest.Method = "POST"; 
     httpWebRequest.Headers["Authorization"] = "Basic " + Convert.ToBase64String(Encoding.ASCII.GetBytes("[email protected]:Password")); 

Я получаю сообщение об ошибке аутентификация не удалась, поскольку удаленная сторона закрыла транспортный поток

Я предполагаю, что он должен делать с завитком команды, имеющей небезопасный вариантом но я не могу для жизни меня видеть, как это сделать в запросе.

ли к сети ограничения/политике я не могу загрузить restSharp или любые другие 3-библиотеки ...

ответ

2

Добавьте эту строку перед выполнением запроса

System.Net.ServicePointManager.ServerCertificateValidationCallback = (obj, X509certificate, chain, errors) => true; 
+0

По-прежнему с той же ошибкой. – Contristo

+0

@ Contristo вы можете указать URL-адрес, поэтому я могу воспроизвести ошибку –

+0

Я не могу извинить. Он попадает на сервер App Dynamics. Старался использовать свой API для отдыха. – Contristo

1

Я закончил с использованием HttpClient вместо этого. В сочетании с использованием информации, полученной от @Alberto Monteiro выше, мне удалось заставить мой код работать так, как ожидалось.

 string url = Request.Form["Url"]; 

     using (var client = new HttpClient()) 
     { 
      ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls11; 

      ServicePointManager.ServerCertificateValidationCallback = (obj, x509Certificate, chain, errors) => true; 

      client.BaseAddress = new Uri(url); 
      client.DefaultRequestHeaders.Accept.Clear(); 
      client.DefaultRequestHeaders.Accept.Add(
       new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("text/xml")); 

      var byteArray = Encoding.ASCII.GetBytes(Request.Form["User"] + "@ACCOUNT:" + Request.Form["Pass"]); 
      var header = new AuthenticationHeaderValue(
       "Basic", Convert.ToBase64String(byteArray)); 
      client.DefaultRequestHeaders.Authorization = header; 

      var response = client.GetAsync(url).Result; 
      HttpContent content = response.Content; 
      string result = content.ReadAsStringAsync().Result; 

     }