Когда я использую этот код, он работает хорошо
string userpass = Convert.ToBase64String(ASCIIEncoding.ASCII.GetBytes("35984281:#tYcl#8F"));
WebClient web = new WebClient();
web.Headers[HttpRequestHeader.Authorization] = string.Format("Basic {0}", userpass);
var response = web.DownloadString("<some url>");
Console.WriteLine(response);
Однако, когда я использую DownloadStringAsyn c с этим кодом, сервер возвращает 401 Unauthorized.
try
{
WebClient web = new WebClient();
web.Credentials = new NetworkCredential("35984281", "#tYcl#8F");
string userpass = Convert.ToBase64String(ASCIIEncoding.ASCII.GetBytes("35984281" + ":" + "#tYcl#8F"));
web.Headers[HttpRequestHeader.Authorization] = "Basic " + userpass;
//web.Headers.Add("Authorization", userpass);
//CredentialCache userpassCache = new CredentialCache();
//userpassCache.Add(new Uri(<some url>), "Basic", new NetworkCredential("35984281", "#tYcl#8F"));
web.DownloadStringCompleted += (s, evt) =>
{
if (!evt.Cancelled && evt.Error == null)
{
tboxQueryResponse.Invoke((MethodInvoker)delegate
{
tboxQueryResponse.AppendText(evt.Result + Environment.NewLine);
tboxQueryResponse.SelectionStart = 1;
tboxQueryResponse.ScrollToCaret();
});
Console.WriteLine(evt.Result);
}
else
{
Console.WriteLine(evt.Error.Message);
}
};
web.DownloadStringAsync(new Uri("<some url>"));
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
Как вы можете видеть в закомментированной строке, я пробовал много попыток, но до сих пор не прошел проверку подлинности. Сервер основан на Linux и использует аутентификацию Basi c. Как и в первой строке кода, он получает ответ, однако, когда я использую DownloadStringAsyn c, он не может быть аутентифицирован. Я ценю помощь.