2017-11-02 1 views
0

하나의 URL을 인증하는 서로 다른 secretKeys가 있습니다. 각 인증에 대해 여러 httpClient를 작성하고 싶지 않습니다. httpClient의 한 객체에 여러 개의 비밀 키를 보낼 수있는 방법이 있습니까? 또는 다중 스레드에서 모든 비밀 키가 병렬 인 url을 인증 할 수 있습니까?다중 토큰을 사용하는 Httpclient 권한 부여

string baseAdd = "some url"; 
    string[] secretKeys = new string[] { "key1", "key2", "key3"}; 
    HttpClient client = new HttpClient { BaseAddress = new Uri(baseAdd) }; 
    client.DefaultRequestHeaders.Accept.Clear(); 
    client.DefaultRequestHeaders.Accept.Add(new 
    MediaTypeWithQualityHeaderValue("application/json")); 
    client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", secretKey[0]); 
    var content = new FormUrlEncodedContent(new[]{new KeyValuePair<string, string>("login", "login") 
       }); 
    response = await client.PostAsync(url, content).ConfigureAwait(false); 
+0

'some url'은 복수 키를 허용합니까? 토큰과 URL이 쌍을 이룰 것으로 예상되는 것처럼 이상하게 들립니다. 그래서 당신은 URL과 토큰을 가져 와서 설정하는 함수를 작성하면됩니까? – zaitsman

+0

예 여러 개의 비밀 키로 인증 할 수있는 bot 프레임 워크의 directline URL입니다. – Vikram

+0

그럼 왜 여러 개가 필요한가요? 하나만 남기세요? 왜 어떤 앱을 사용해야하는지, 앱은 어떤 앱을 사용해야하는지 어떻게 알 수 있습니까? – zaitsman

답변

2

DefaultRequestHeaders 그냥를 다음과 같습니다 HttpClient을 통해 전송 된 요청에 대한 기본 헤더. "기본값"으로 암시 된 것처럼 다른 곳에서도 설정할 수 있습니다. PostAsync(...)과 같은 메소드는 요청 객체를 작성하고 SendAsync(message)을 통해 전송하는 래퍼입니다.

static HttpClient client = new HttpClient(); 

을 그리고 메시지를 작성하고 귀하의 헤더를 적용

그래서 당신은 단순히 정적, 어딘가 HttpClient를 정의 할 수 있습니다.

HttpRequestMessage message = new HttpRequestMessage(HttpMethod.Post, "http://www.site.tld/blah"); 
message.Headers.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", "Moo"); 
message.Content = new StringContent("{\"a\": 5}", System.Text.Encoding.UTF8, "application/json"); 
var result = await client.SendAsync(message); 
관련 문제