如何解决“无法建立SSL连接,请参阅内部异常。”尝试下载osu时!头像

时间:2019-01-21 20:43:54

标签: c# .net ssl avatar

我想下载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);
}

3 个答案:

答案 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