webclient DownloadString создает туннель с HTTPS - PullRequest
0 голосов
/ 26 апреля 2019

Я пытаюсь использовать API на api.pwnedpasswords.com

Требуется, чтобы я сделал запрос GET через HTTPS

Это хорошо работает с использованием метода WebClients OpenRead (), но этотребует от меня иметь дело с streamReader.

Я хочу использовать метод DownloadStringTaskAsync () вместо него, но он продолжает пытаться сначала открыть туннель, который не работает с этим API, поэтому запрос не выполняется

Я попробовал то, что было предложено здесь и здесь , но это не решает мою проблему.

Вопрос: Как сделатьЯ получаю WebClient.DownloadString для выдачи GET-запроса?

Не работает - с помощью DownloadStringTaskAsync

WebClient wc = new WebClient();
wc.Encoding = Encoding.UTF8;
webClient.Headers.Add("UserAgent", "Backend; PasswordChange"); 
var response = await wc.DownloadString($"https://api.pwnedpasswords.com/range/{prefix}");
if (response.IndexOf(hash.Substring(5), StringComparison.OrdinalIgnoreCase) > -1)
    return BadRequest"Password not allowed. Please choose a more secure one.");

Код работает - с помощью OpenRead

WebClient wc = new WebClient();
webClient.Headers.Add("UserAgent", "Backend; PasswordChange");
Stream stream = wc.OpenRead($"https://api.pwnedpasswords.com/range/{prefix}");
using (StreamReader reader = new StreamReader(stream, Encoding.UTF8))
{
    string hashList = await reader.ReadToEndAsync();
    var stuff = hashList.IndexOf(postfix, StringComparison.OrdinalIgnoreCase);
    if (hashList.IndexOf(postfix, StringComparison.OrdinalIgnoreCase) >= 0)
        return BadRequest("Password not allowed. Please choose a more secure one.");
}
...