private async Task GetMetadataAsync()

in aliyun-net-credentials/Provider/EcsRamRoleCredentialProvider.cs [358:398]


        private async Task<string> GetMetadataAsync(IConnClient client, string url)
        {
            HttpRequest httpRequest = new HttpRequest
            {
                Method = MethodType.GET,
                ConnectTimeout = connectTimeout,
                ReadTimeout = readTimeout,
                Url = url
            };

            var metadataToken = await GetMetadataTokenAsync(client);
            if (metadataToken != null)
            {
                httpRequest.Headers.Add("X-aliyun-ecs-metadata-token", metadataToken);
            }

            HttpResponse httpResponse;
            try
            {
                httpResponse = await client.DoActionAsync(httpRequest);
            }
            catch (Exception ex)
            {
                throw new CredentialException("Failed to connect ECS Metadata Service: " + ex.GetType() + ": " +
                                              ex.Message);
            }

            if (httpResponse != null && httpResponse.Status == 404)
            {
                throw new CredentialException("The role name was not found in the instance");
            }

            if (httpResponse != null && httpResponse.Status != 200)
            {
                throw new CredentialException(EcsMetadataFetchErrorMsg + " HttpCode=" + httpResponse.Status);
            }

            if (httpResponse != null) return httpResponse.GetHttpContentString();

            throw new CredentialException("Http response is null");
        }