我想下载osu!头像以使用它们,但不断出现此错误:
无法建立SSL连接。
内部例外是:
System.Net.Http.HttpRequestException:无法建立SSL连接,请参阅内部异常。 ---> System.Security.Authentication.AuthenticationException:验证失败,请参阅内部异常。 ---> System.ComponentModel.Win32Exception:Полученонепредвиденноесообщениеилионоимеетнеправильныйформат
示例网址: https://a.ppy.sh/10638551?1524507784.png
我尝试使用HttpClient和WebClient,但没有成功。
using(HttpClient client = new HttpClient())
{
var resp = await client.GetAsync("https://a.ppy.sh/10638551?1547998515.jpeg");
var responseStr = await resp.Content.ReadAsStringAsync();
File.WriteAllText("html/avatars/avatar.jpeg", responseStr);
}
答案 0 :(得分:1)
在使用HttpClient之前,您应该设置HttpClientHandler;
var handler = new HttpClientHandler();
handler.ServerCertificateCustomValidationCallback +=
(sender, certificate, chain, errors) =>
{
return true;
};
仅比您的HttpClient代码。 必须适用于.net Core 3。*
答案 1 :(得分:0)
一段时间后,我发现我使用的库有点不好。之后我发现了Selenium。
考虑到这一点,我开始使用Selenium WebDriver并认为可以为所需页面截图,然后裁剪该图像并得到所需的内容。
因此,没有必要继续这个问题。
答案 2 :(得分:0)
我找到了该博客为我提供的解决方案
ServicePointManager.ServerCertificateValidationCallback += (sender, certificate, chain, errors) =>
{
// local dev, just approve all certs
if (development) return true;
return errors == SslPolicyErrors.None ;
};
https://www.khalidabuhakmeh.com/validate-ssl-certificate-with-servicepointmanager