У меня есть некоторый код 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
показывает ошибку, не поддерживаемую платформой.
Есть ли другой способ сделать этот вид вызова?