【问题标题】:How to check whether the URL is valid or not [duplicate]如何检查URL是否有效[重复]
【发布时间】:2013-04-11 09:00:01
【问题描述】:

我有一个文本框在那个用户输入 URL,但是如果想在页面渲染时检查那个 URL,那该怎么办?

这是我的代码:

protected void btnRender_Click(object sender, EventArgs e)
{
    string strResult = string.Empty;
    WebResponse objResponse;
    WebRequest objRequest = System.Net.HttpWebRequest.Create(urltxt.Text);
    objResponse = objRequest.GetResponse();
    using (StreamReader sr = new StreamReader(objResponse.GetResponseStream()))
    {
        strResult = sr.ReadToEnd();
        sr.Close();
    }
    strResult = strResult.Replace("<form id='form1' method='post' action=''>", "");
    strResult = strResult.Replace("</form>", "");          
    TextBox1.Text = strResult.Trim();
    div.InnerHtml = strResult.Trim();
}

我有这个代码来检查 URL 是否有效,你能告诉我在哪里调用它吗? {如果我也想检查 https 那么我该怎么做呢}

 protected bool CheckUrlExists(string url)
    {
        // If the url does not contain Http. Add it.
      // if i want to also check for https how can i do.this code is only for http not https
        if (!url.Contains("http://"))
        {
            url = "http://" + url;
        }
        try
        {
            var request = WebRequest.Create(url) as HttpWebRequest;
            request.Method = "HEAD";
            using (var response = (HttpWebResponse)request.GetResponse())
            {
                return response.StatusCode == HttpStatusCode.OK;
            }
         }
         catch
         {
             return false;
         }
     }

文本框名称为 urltxt

【问题讨论】:

  • 还有很多东西要验证,看看这个Python question
  • @oleksii 我已经放了那个正则表达式,但没有检查它是否有效或它是否存在
  • 如果您需要知道它是否处于活动状态/存在,您应该访问它。这是唯一的判断方法,即使这样也不能保证(例如,您可能会面临 wifi 访问的付费墙,或代理服务器的 404 页面 - 或者可能存在网络问题阻止您访问您所在的 URL试图访问)

标签: c# asp.net


【解决方案1】:

试试下面的方法,对你有帮助....

     protected void btnRender_Click(object sender, EventArgs e)
        {
            if(CheckUrlExists(urltxt.Text))
            {
                string strResult = string.Empty;
                WebResponse objResponse;
                WebRequest objRequest = System.Net.HttpWebRequest.Create(urltxt.Text);
                objResponse = objRequest.GetResponse();
                using (StreamReader sr = new StreamReader(objResponse.GetResponseStream()))
                {
                    strResult = sr.ReadToEnd();
                    sr.Close();
                }
                strResult = strResult.Replace("<form id='form1' method='post' action=''>", "");
                strResult = strResult.Replace("</form>", "");
                TextBox1.Text = strResult.Trim();
                div.InnerHtml = strResult.Trim();
            }
            else
            {
                MessageBox.Show("Not a Valid URL");
            }
        }

【讨论】:

  • 非常感谢兄弟......它的工作......我有问题只是看到编辑
  • 欢迎兄弟 :) 乐于助人...
  • 嘿 @pandian 如果还想检查邮件和 https 是否有效..我该怎么做才能检查它是否有效 if (!url.包含("http://")) { url = "http://" + url; } 尝试 { var request = WebRequest.Create(url) as HttpWebRequest; request.Method = "头";使用 (var response = (HttpWebResponse)request.GetResponse()) { return response.StatusCode == HttpStatusCode.OK; } } 捕捉 { 返回错误; } }
  • Pandian 怎么做...提前谢谢老哥
【解决方案2】:

试试这个 uriName(你想要的 URI)

  bool Uriresult = Uri.TryCreate(uriName, UriKind.Absolute, out uriResult) && uriName.Scheme == Uri.UriSchemeHttp;

根据你的代码

string uriName = urltxt.Text; bool Uriresult = Uri.TryCreate(uriName, UriKind.Absolute, out uriResult) && uriName.Scheme == Uri.UriSchemeHttp;

【讨论】:

  • 能否请您根据我的代码编辑您的代码...因为 uri 名称不存在
  • 确定string uriName = urltxt.Text; bool Uriresult = Uri.TryCreate(uriName, UriKind.Absolute, out uriResult) &amp;&amp; uriName.Scheme == Uri.UriSchemeHttp;
  • 你能告诉我什么是 uriResult in out uriResult
猜你喜欢
  • 2010-12-20
  • 1970-01-01
  • 1970-01-01
  • 2023-03-27
  • 2012-09-05
  • 2021-03-21
  • 2019-10-28
  • 1970-01-01
  • 2010-10-29
相关资源
最近更新 更多