Blazor на стороне клиента вызывает сторонние учетные данные api HttpClientHandler PlatformNotSupported - PullRequest
0 голосов
/ 28 января 2020

У меня есть некоторый код c# для вызова остальных API базы данных, и для этого необходимо ввести учетные данные как часть вызова API:

public string GetezeName(string account, string readcode)
{                
    string s = "";

    credentialCache = new CredentialCache(); 
    credentialCache.Add( 
           new Uri("https://ezecontrol.com"), // request url's host
           "Digest",  // authentication type 
            new NetworkCredential(account, readcode)); 

    try
    {
        HttpWebRequest request;
        request = (HttpWebRequest)WebRequest.Create("https://ezecontrol.com/api/status.php");
        request.Credentials = credentialCache;
        request.Method = "GET";

        using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
        {         
            Stream data = response.GetResponseStream();
            StreamReader inx = new StreamReader(data);
            json = inx.ReadToEnd();

            response.Close();
            inx.Close();                   
        }
    }
    catch(Exception ex)
    {
    }
    return s;
}

Однако мне нужно изменить это использовать HttpClient в C# клиентском блейзоре:

public async Task DoUpdate()
{
    try
    {
        CredentialCache credentialCache;
        string account = "xxyyzz";
        string readcode = "xxyyzz";

        credentialCache = new CredentialCache();
        credentialCache.Add(
                   new Uri("https://ezecontrol.com"), // request url's host
                   "Digest",  // authentication type 
                   new System.Net.NetworkCredential(account,readcode));

        using (var handler = new HttpClientHandler { Credentials = credentialCache })
        using (var client = new HttpClient(handler))
        { 
            HttpResponseMessage msg = await client.GetAsync("https://ezecontrol.com/api/status.php");

            reply = msg.StatusCode.ToString();

            return ;
        }
    }
    catch(Exception ex)
    {
        reply = ex.Message+ex.StackTrace;

        return ;
    }
    return ;
}

Когда это выполнено, HttpClientHandler показывает ошибку, не поддерживаемую платформой.

Есть ли другой способ сделать этот вид вызова?

...