(я использую Visual Studio 2015)
Я скопировал эту функцию из другого проекта VS (он отлично работает). Я заметил, что получаю ошибки на tokenClient.SetBasicAuthentication()
.
Затем я понял из рабочего кода, что это ссылка на System.Net.Http
.
Итак, я добавил ссылку через Add -> References
.
Я все еще получал ошибку. Поэтому я пошел искать пакет Nuget и установленную систему. Net .Http v4.3.4 (от Microsoft).
Я все еще получаю эту ошибку. (см. изображение - я тоже включил код).
Кто-нибудь может помочь? Почему я не могу заставить SetBasicAuthentication
работать?
using System;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Data;
using System.Data.SqlClient;
using System.Globalization;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Security.Authentication;
using System.Threading.Tasks;
using System.Web;
// other code ......
// other code ......
public static async Task<string> querySite(string url)
{
var tokenClient = new HttpClient();
var postData = new FormUrlEncodedContent(new Dictionary<string, string>() { { "grant_type", "client_credentials" }, { "scope", "site_integration_api" } });
//Create TLS Security Protocol
ServicePointManager.SecurityProtocol = Tls12;
tokenClient.SetBasicAuthentication(clientID, clientSecret);
var tokenResponse = await tokenClient.PostAsync(loginUrl, postData);
if (!tokenResponse.IsSuccessStatusCode)
throw new ApplicationException("Could not accept token. Ensure credentials are correct.");
string tokenData = await tokenResponse.Content.ReadAsStringAsync();
int start = tokenData.IndexOf(access_token_string) + access_token_string.Length + 1;
int end = tokenData.IndexOf("\"", start + 1) - start;
var accessToken = tokenData.Substring(start, end);
//Call service to get XML
var serviceClient = new HttpClient();
serviceClient.SetBearerToken(accessToken);
return await serviceClient.GetStringAsync(url);
}