Использование DefaultCredentials в GetSystemWebProxy на C# NetFramework

Есть простой код на c#, который должен отправлять json-данные методом POST и получать ответ:

        var httpWebRequest = (HttpWebRequest)WebRequest.Create(url);
        httpWebRequest.ContentType = "application/json";
        httpWebRequest.Method = "POST";

        IWebProxy proxy = WebRequest.GetSystemWebProxy();
        //proxyCredentials = new NetworkCredential("user", "password"); // замените на ваши данные
        proxy.Credentials = CredentialCache.DefaultCredentials;            

        httpWebRequest.Proxy = proxy;

        using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
        {
            string json = Encoding.UTF8.GetString(data);
            streamWriter.Write(json);
        }
        var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
        string result = null;
        using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
        {
            result = streamReader.ReadToEnd();
        }

        Console.WriteLine(result);

При использовании DefaultCredentials или DefaultNetworkCredentials неизменно получаю ошибку 407: Требуется аутентификация посредника. При использовании NetworkCredential("user", "password") все работает хорошо. Но вопрос как раз в том, как заставить c# использовать Windows-учетные данные текущего пользователя. По аналогии с простым браузером, у которого указан прокси. Пользователю же не приходится вводить повторно логин-пароль при работе с браузерами.

Все поиски по использованию учетных данных текущего пользователя приводят к DefaultCredentials или DefaultNetworkCredentials, но они не работают.

Вопрос: как правильно использовать учетные данные пользователя с GetSystemWebProxy?


Ответы (0 шт):