基本的に、REST APIオンラインに接続しようとしています。簡単ですよね?
ただし、接続しようとするたびに 401 (Unauthorized) エラーが発生します。これをテストするために C# コンソール アプリを使用しています。また、PUTMAN (HTTP 要求を表示するための Google Chrome アプリ) も使用してみました。
私が使用している API へのリンクは次のとおりです: https://community.dynatrace.com/community/display/APMSAASDOC/Login+-+REST+API
リストされているすべての手順に従います。ユーザー名とパスワードが正しいことはわかっています (Dynatrace ポータルにログインしました)。誰が何が間違っているのか考えていますか? 以下は私のコードです(明らかな理由により、実際のユーザー名とパスワードを削除しました):
static async Task RunAsync()
{
string _user;
string _password;
string _authorizationType;
string _contentType;
string _CredentialsToBase64;
string _url = "https://datafeed-api.dynatrace.com";
_user = "MYUSERNAME";
_password = "MYPASSWORD";
_authorizationType = "basic";
_contentType = "application/json";
_CredentialsToBase64 = System.Convert.ToBase64String(System.Text.ASCIIEncoding.ASCII.GetBytes(_user + ":" + _password));
using (var client = new HttpClient())
{
client.BaseAddress = new Uri(_url);
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(_contentType));
client.DefaultRequestHeaders.Add("Authorization", _authorizationType + " " + _CredentialsToBase64);
using (HttpResponseMessage httpResponse = await client.GetAsync("publicapi/rest/v1.0/login?user=MYUSERNAME&password=MYPASSWORD HTTP/1.1"))
{
if (httpResponse.IsSuccessStatusCode)
{
Console.WriteLine("Success");
}
else
{
Console.WriteLine(string.Format("Service request failed ({0})", httpResponse.StatusCode));
}
}
}