Cisco ACI へログインする C# サンプルプログラム
C# で ACI へログインするサンプルを書いてみました。 ACI 4.2(2e) で検証しましたが、ACI 側のバージョンに依存する部分はありません。 .NET Framework は 4.7.2 を使いました。 サンプルとしての分かりやすさを優先すべく、出来るだけコンパクトに書いていますが、本格的に利用するには以下のような改善が必要だと思います。
- 以下をハードコードせず、引数や外部ファイルから指定出来るようにする
- 例外処理を追加する
- Json をべた書きせず、クラス化する
- HttpClient のタイムアウト時間等、必要なパラメータをチューニングする
実際にはレスポンスから token
を抜き出し、以降の処理で使います… というアプリケーションを書くことになると思います。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42 | using System;
using System.Net;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
namespace HttpPostSample
{
class Program
{
static void Main(string[] args)
{
var apic = "10.0.0.1";
var username = "admin";
var password = "password";
var url = "https://" + apic + "/api/aaaLogin.json";
var json = "{\"aaaUser\":{\"attributes\":{ \"name\":\"" + username + "\",\"pwd\":\"" + password + "\"}}}";
string responseData = "";
sendRequest(url, json).ContinueWith(
(task) =>
{
responseData = task.Result;
}).Wait();
Console.WriteLine(responseData);
}
static private async Task<string> sendRequest(string url, string json)
{
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;
ServicePointManager.ServerCertificateValidationCallback += (sender, cert, chain, sslPolicyErrors) => true;
var client = new HttpClient();
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, url);
request.Content = new StringContent(json, Encoding.UTF8, "application/json");
var response = await client.SendAsync(request);
return await response.Content.ReadAsStringAsync();
}
}
}
|