public CoresightHttpClient(Uri coresightBaseUri, CoresightRequestVerificationTokens tokens, ICredentials credentials = null) { _coresightBaseUri = coresightBaseUri; _tokens = tokens; _clientHandler = credentials != null ? new HttpClientHandler() { CookieContainer = _tokens.CookieContainer, Credentials = credentials, PreAuthenticate = true } : new HttpClientHandler() { CookieContainer = _tokens.CookieContainer, UseDefaultCredentials = true, PreAuthenticate = true }; HttpClient = new HttpClient(_clientHandler) { BaseAddress = _coresightBaseUri }; HttpClient.DefaultRequestHeaders.Add("RequestVerificationToken", _tokens.HiddenInputToken); HttpClient.DefaultRequestHeaders.Add("Referer", _coresightBaseUri.OriginalString); HttpClient.DefaultRequestHeaders.Add("Host", _coresightBaseUri.Host); }
/// <summary> /// Gets request verification tokens from the server /// </summary> /// <returns>An object with a field value and a cookie collection</returns> private async Task <CoresightRequestVerificationTokens> GetRequestVerificationTokensAsync() { CoresightRequestVerificationTokens tokens = new CoresightRequestVerificationTokens(); using (var client = new CoresightHttpClient(_coresightBaseUri, tokens, _credentials)) { Console.WriteLine("Getting Coresight verification tokens."); HttpResponseMessage response = await client.HttpClient.GetAsync(""); Console.WriteLine("Response: {0} - {1}", response.StatusCode, response.ReasonPhrase); response.EnsureSuccessStatusCode(); string content = await response.Content.ReadAsStringAsync(); Regex tokenFinder = new Regex(@"(?:window\.Coresight\.RequestVerificationToken)\s*?=\s*'([\w:-]+?)'"); tokens.HiddenInputToken = tokenFinder.Match(content).Groups[1].Captures[0].Value; return(tokens); } }