【发布时间】:2017-10-09 19:53:40
【问题描述】:
我有一个使用 HttpClient 的异步方法:
private static HttpClient client = new HttpClient(); //As pointed by @maccettura
private async Task<string> GetResult(Uri url, string user, string pass)
{
var PassArray = new UTF8Encoding().GetBytes(user + ":" + pass);
client.BaseAddress = url;
client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Basic", Convert.ToBase64String(_passArray));
string result;
using (HttpResponseMessage response = await client.GetAsync(url))
using (HttpContent content = response.Content)
{
result = await content.ReadAsStringAsync();
}
return result;
}
我不得不更改为同步 WebClient
private string GetResult(Uri url, string user, string pass)
{
using (var client = new WebClient())
{
client.UseDefaultCredentials = true;
client.Credentials = new NetworkCredential(user, pass);
using (var stream = client.OpenRead(url))
using (var streamReader = new StreamReader(stream, Encoding.UTF8, true))
{
return streamReader.ReadToEnd();
}
}
}
发送普通用户名和密码是否会损害安全性?如果是这样,有没有办法提高安全性? (url是一个Https地址)
【问题讨论】:
-
@maccettura 哦……很有趣。谢谢!
-
是 HTTPS 的使用,而不是您使用的保护凭证的库。 Base64 编码无论如何都不是任何保护。
-
好的,很高兴知道 - 网址受 HTTPS 保护,
标签: c# httpclient webclient