从c#

时间:2018-01-24 12:31:59

标签: c# https downloading

所以,我是数据库管理员,由于奇怪的原因,我必须维护c#代码,我完全吮吸这个...代码应该从网址下载图像,但当网址是httpS我有一个错误(简单的http网址没问题)。我认为我的前任有同样的问题,因为我可以在代码中看到忽略https的演练:

public override Stream GetData(DataManager dm)
{
    try
    {
        // Change SSL checks so that all checks pass
        ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(delegate { return true; });
        // download image
        return new MemoryStream(dm.Caller.DownloadData(OriginUrl));
    }
    catch(Exception e)
    {
        throw new Exception(String.Format("Failed to download image at this url '{0}'", OriginUrl), e);
    }
}

我试着阅读一些关于ServerCertificateValidationCallback的内容,但这是我在c#中读取的第一个代码,我完全丢失了......你知道为什么这段代码不适用于httpS网址吗? (标准的http网址没问题)。

非常感谢

2 个答案:

答案 0 :(得分:0)

var req = (HttpWebRequest)WebRequest.Create(OriginUrl);
try
{
  using (var resp = (HttpWebResponse)req.GetResponse())
  {
    return resp.GetResponseStream();
  }
}
catch (Exception e)
{
  throw new Exception(String.Format("Failed to download image at this url '{0}'", OriginUrl), e);
}

答案 1 :(得分:0)

尝试在下面添加此code并将其放在下载图片的行上方:

System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12;