C # дайджест авторизации, но работает на почтальоне - PullRequest
0 голосов
/ 27 августа 2018

Мне нужно авторизоваться, чтобы получить некоторую информацию из API.Дело в том, что когда я пытаюсь авторизоваться, это дает мне ошибку 401.Я использовал в качестве основы следующий пост, который я адаптировал под свою систему.https://stackoverflow.com/a/30873757/10279381

            uri = new Uri(urlBase + dir);
            var request2 = (HttpWebRequest)WebRequest.Create(uri);
            request2.Headers.Add("Authorization", GetDigestHeader(dir));
            request2.Accept = "text/html,application/xhtml+xml,application/xml";
            response = (HttpWebResponse)request2.GetResponse();

Дело в том, что метод GetDigestHeader возвращает правильную строку авторизации (я пытался использовать ее с помощью почтальона, и она работает нормально), но когда я запускаю свой код, он возвращает код 401. Есть ли что-тоЯ скучаю?У Почтальона нет других заголовков, кроме авторизации, и я попробовал свой код с заголовком Accepts и без него.

РЕДАКТИРОВАТЬ:

GET /18 HTTP/1.1
Host: 10.0.20.109
Authorization: Digest username="admin", realm="iRMC S4@iRMC00D83D", nonce="1b4e8277-00021548", uri="/18", algorithm=MD5, response="93c149aed13d2a8d0c8ec5ac7d7f052d"
Cache-Control: no-cache

1 Ответ

0 голосов
/ 27 августа 2018

Вы пробовали использовать HttpClient

HttpClientObject = new HttpClient(new HttpClientHandler 
{ AutomaticDecompression = DecompressionMethods.GZip, 
ClientCertificateOptions = ClientCertificateOption.Automatic, 
Credentials = new NetworkCredential(username, password, domain) });
HttpClientObject.BaseAddress = new Uri(url);
HttpClientObject.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("text/html,application/xhtml+xml,application/xml"));
HttpResponseMessage response = HttpClientObject.GetAsync();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...