У меня есть требование, при котором мне нужно извлекать значения метрик с нескольких серверов, используя один API-интерфейс отдыха Azure (мне нужно сделать только один вызов API вместо нескольких вызовов).
Как этого добитьсяC #?
Я уже создал класс, который выбирает значения метрик одной виртуальной машины.Вот код для этого:
class Program
{
string tenantId;
string token;
public static void Main(string[] args)
{
//Metrics metrics = new Metrics();
var pg = new Program();
pg.token = pg.GetAccessToken();
string output = pg.doGET("https://management.azure.com/subscriptions/d849b9f5-7a60-40fc-acb6-81d1955aa423/resourceGroups/Test_G/providers/Microsoft.Network/networkInterfaces/helloazuretest215/providers/microsoft.insights/metricDefinitions?api-version=2018-01-01", pg.token);
//metrics.metricAvailabilities = JsonConvert.DeserializeObject<Metrics>(output).metricAvailabilities;
Console.WriteLine(output);
Console.ReadLine();
}
public string GetAccessToken()
{
string authContextURL = "https://login.windows.net/33d5de17-8fff-4150-b93c-fbec078c02b6/oauth2/token";
var authenticationContext = new AuthenticationContext(authContextURL);
var credential = new ClientCredential(clientId: "052d8ab3-9184-4e46-aaff-20c3d650397g", clientSecret: "azure123");
var result = authenticationContext.AcquireToken(resource: "https://myazureapp.app.com", clientCredential: credential);
if (result == null)
{
throw new InvalidOperationException("Failed to obtain the JWT token");
}
token = result.AccessToken;
return token;
}
private string doGET(string URI, String token)
{
Uri uri = new Uri(String.Format(URI));
// Create the request
var httpWebRequest = (HttpWebRequest)WebRequest.Create(uri);
httpWebRequest.Headers.Add(HttpRequestHeader.Authorization, "Bearer " + token);
httpWebRequest.ContentType = "application/json";
httpWebRequest.Method = "GET";
// Get the response
HttpWebResponse httpResponse = null;
try
{
httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
}
catch (Exception ex)
{
Console.WriteLine("Error from : " + uri + ": " + ex.Message,
"HttpWebResponse exception");
return null;
}
string result = null;
using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
{
result = streamReader.ReadToEnd();
}
return result;
}
}
Может ли кто-нибудь помочь мне с этим требованием?