네트워크 자격 증명이있는 HttpClient.GetAsync


93

나는 현재 HttpWebRequest웹 사이트를 얻기 위해 사용하고 있습니다. 에 대해 제공되지 않는 await 패턴을 사용하고 싶습니다 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을 설정하고 싶을 것입니다.
Garr Godfrey

4
그 것이 좋습니다 특히 서버 시나리오에서, HttpClient를의 정적 인스턴스를 사용하는
제임스 웨스트 게이트

3
그렇다면 서버 시나리오에서 무엇을해야합니까? 정적 인스턴스가 없지만 자격 증명을 전달해야 할 때 발생하는 문제에 직면 해 있습니다.
Scott Chamberlain
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.