C# WebClient.DownloadFile方法和HTTPS-它是HTTPS连接吗?

C# WebClient.DownloadFile方法和HTTPS-它是HTTPS连接吗?,c#,C#,删掉大量不相关的信息,最基本的是我有一个这样的网址: https://dinglydangs.com/download.dll?request=file&name=dunderdata.csv 我正在使用WebClient.DownloadFile来下载文件。我需要知道,由于它是https链接,该方法是否使用https连接下载文件。如果没有,我需要采取什么步骤来确保使用HTTPS连接 可能相关:链接本身通过电子邮件发送给我。不需要实际的身份验证,我只需导航到链接并下载文件。WebClient将

删掉大量不相关的信息,最基本的是我有一个这样的网址:

https://dinglydangs.com/download.dll?request=file&name=dunderdata.csv
我正在使用
WebClient.DownloadFile来下载文件。我需要知道,由于它是https链接,该方法是否使用https连接下载文件。如果没有,我需要采取什么步骤来确保使用HTTPS连接


可能相关:链接本身通过电子邮件发送给我。不需要实际的身份验证,我只需导航到链接并下载文件。

WebClient将使用您传递下载方法的Uri中指定的协议。你不需要做任何特殊的事情来实现这一点


您可以使用类似这样的工具来验证这一点,方法是检查从您的机器输出的连接。

可能的重复,甚至不能远程重复。请阅读并理解这两个问题,而不仅仅是主题,然后再建议其中一个是重复的@凯尔哈勒斯。它确实会确认它是否是一个安全连接。@icemanind Fiddler似乎在告诉我协议是HTTP而不是HTTPS。现在怎么办?[编辑:忽略,我错误地阅读了Fiddler]我没有向下载方法传递Uri。我正在使用
Webclient.Downloadfile(字符串地址,字符串文件名)
@当然,我说的是
uri
,方法接受
address
都是指向要下载的在线资源的指针。只要在线资源链接是https,连接将通过https…@JdinklageMorgoone,使用像
新Uri(地址)
这样的Uri对象,检查并更改Uri对象中的协议(如果需要),然后将其传递给WebClient.Downloadfile(…)。或者,如果您的代码对Uri类型不敏感,您可以执行一些简单的字符串操作,将“http://”协议前缀更改为“https://”前缀。@Nate@elgonzo我已经使用Fiddler进行了检查,它将协议显示为http。我在
System.Uri
对象中没有看到任何用于更改协议的属性。我该怎么做?@JdinklageMorgoone,我很高兴你解决了你的问题。如果您仍然对Uri感到好奇,那么很抱歉我的评论中关于Uri语句的错误。您必须使用UriBuilder来更改协议:
var ub=new UriBuilder(address){Scheme=Uri.UriSchemeHttps}
并将
ub.Uri
传递给DownloadFile方法。(如果您必须处理带有或不带协议前缀的URL,例如“www.some.com”而不是“http://www.some.com”,那么与字符串操作相比,这是一段较短的代码。)