2016-04-20 3 views
0

Я пытаюсь подключиться к rest api, который отправляет ответ json. Когда я копирую вставку URL-адреса в браузере. Браузер открывает всплывающее окно для ввода имени пользователя и пароля..Net rest api call not working

При вводе имени пользователя и пароля (идентификатор активного каталога и пароль) служба отправляет ответ JSON. Http request and Response

Но пытается соединиться с кодом, он возвращает следующую ошибку

{StatusCode: 401, ReasonPhrase: 'Несанкционированное', версия: 1.1, Содержание: System.Net.Http.StreamContent, Заголовки: {Keep-Alive: timeout = 15, max = 100 Подключение: Keep-Alive Дата: ср, 20 апр 2016 11:38:45 GMT Сервер: Apache WWW-Authenticate: Basic realm = "Войти с помощью AD -ENT, но не префикс вашего идентификатора с доменом «
Content-Length: 455 Content-Type: text/html; кодировка = изо-8859-1}}

HttpClient client = new HttpClient(); 
client.BaseAddress = new Uri(@"http://pro.abc.com/services/"); 

var authData = string.Format("{0}:{1}","username", "password"); 
var authHeaderValue = Convert.ToBase64String(Encoding.UTF8.GetBytes(authData)); 
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", authHeaderValue); 

HttpResponseMessage response = await client.GetAsync("reportpro/reports/11824"); 
+0

Если вы используете Fiddler для проверки HTTP-потока в обоих случаях, вы обнаружите разницу в HTTP-трафике - это даст вам хорошую идею, где вы ошибетесь. Например, браузер использует POST вместо GET для отправки запроса - трудно сказать, не глядя на основной трафик. – PhillipH

+0

Оба используют Get. пожалуйста, проверьте ссылку на запрос и ответ Http в вопросе –

+0

У вас нет разрешения на доступ к этому URL-адресу. Вот что [401 is] (https://httpstatuses.com/401) – Liam

ответ

0

код был совершенным, только вопрос был я использовал HTTP вместо HTTPS.

При копировании, вставляющем URL-адрес в браузере, браузер преобразовывал http в https. Следовательно, он отлично работал в браузере.

После изменения http на https в коде он отлично работал.

HttpClient client = new HttpClient(); 
client.BaseAddress = new Uri(@"https://pro.abc.com/services/");