HttpClient.GetAsync з мережевими обліковими даними


93

Зараз я використовую HttpWebRequestдля отримання веб-сайту. Я хотів би скористатися схемою очікування, яка не дана HttpWebRequests. Я знайшов клас HttpClient, який, здається, є новим класом робітників Http. Я використовую HttpClient.GetAsync(...)запит на свою веб-сторінку. Але мені не вистачає можливості додати ClientCredentialsлайк HttpWebRequest.Credentials. Чи є спосіб надати HttpClientінформацію про автентифікацію?

Відповіді:


165

Ви можете передати екземпляр класу HttpClientHandler з обліковими записами конструктору HttpClient :

using (var handler = new HttpClientHandler { Credentials = ... })
using (var client = new HttpClient(handler))
{
    var result = await client.GetAsync(...);
}

20
Ви також можете встановити UseDefaultCredentials = trueдляHttpClientHandler
DarkWalker

9
Це може викликати поведінку неоптимальний , коли Базова аутентифікація потрібно stackoverflow.com/q/25761214/57428
Sharptooth

2
я виявив, що ви захочете встановити handler.ClientCertificateOptions = ClientCertificateOption.Automatic для того, щоб насправді надсилати кредити.
Гарр Годфрі

4
Доцільно використовувати статичний екземпляр HttpClient, особливо в серверних сценаріях
Джеймс Вестгейт,

3
Отже, що нам робити в серверних сценаріях? Ми стикаємося з проблемами, які виникають у вас, коли у вас немає статичного примірника, але нам потрібно передати облікові дані.
Скотт Чемберлен
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.