如何在C#中检查给定的URL是HTTP还是HTTPS

时间:2013-12-19 10:23:20

标签: c# url https

我需要检查给定的URL(不一定以http或https为前缀)是HTTP还是HTTPs。
这可能在C#中吗? 如果用户只给出www.dotnetperls.com没有任何前缀,我必须能够识别出它是HTTP。尝试以下,

 HttpWebRequest request = (HttpWebRequest)WebRequest.Create("www.dotnetpearls.com");         
 string u = request.RequestUri.Scheme;

但是这会产生无效的网址错误。它期望指定协议。

6 个答案:

答案 0 :(得分:8)

尝试这样的事情:

public static bool IsHttps()
{
    return HttpContext.Current.Request.IsSecureConnection;
}

如果您使用,则可以检查Request.RequestUri.Scheme是否为Uri.UriSchemeHttps

答案 1 :(得分:5)

var uri = new Uri("https://sss.com");
var requestType= uri.Scheme;

此处requestType会告诉您请求的类型是http还是https

答案 2 :(得分:2)

if (url.StartsWith("https://", StringComparison.OrdinalIgnoreCase))
{
}

答案 3 :(得分:1)

我也一直在寻找相同的解决方案,但不幸的是我找不到任何解决方案。

还有一些网站也不支持 www。

所以我发送了 4 个请求,以确定该网站是否支持 https 并找到支持的那个。

我知道这不是一个好的解决方案,但它至少有效。 如果第一个有效,我不会打电话给其他人...

  1. WebRequest.Create("https://dotnetpearls.com");
  2. WebRequest.Create("https://www.dotnetpearls.com");
  3. WebRequest.Create("http://dotnetpearls.com");
  4. WebRequest.Create("http://www.dotnetpearls.com");

答案 4 :(得分:0)

您可以使用HttpRequest.IsSecureConnection

HttpContext.Current.Request.IsSecureConnection   

OR,请求对象可用。

Request.IsSecureConnection

答案 5 :(得分:0)

对于ASP.net核心,可以使用对我有用的属性Request.Scheme:

var uri = String.Format("{0}://{1}",Request.Scheme,Request.Host.Value);