使用c#检查URL是否存在

本文关键字:是否 存在 URL 检查 使用 | 更新日期: 2023-09-27 17:53:47

我一直在试图找出是否提供URL可用。可用并不意味着域名可用,我的意思是URL可访问或不可访问

i have test code

var webrequest = (HttpWebRequest)WebRequest.Create(
                                       "http://localhost:64519/TestPage.aspx");
webrequest.Method = "HEAD";
HttpWebResponse response = webrequest.GetResponse() as HttpWebResponse;

和Testpage

的页面加载上有一些代码
protected void Page_Load(object sender, EventArgs e)
{
    StreamReader stream = new StreamReader(Request.InputStream);
    XDocument xmlInput = XDocument.Load(stream);
}

现在的问题是,即使我在请求中添加了HEAD,但它进入PageLoad并抛出异常。

场景:我一直试图发送XML提供的URL。在XML的情况下,它的工作很好,但当我试图检查链接是活的或不抛出异常,因为XDocument.Load(流);没有XML'我当然可以用

来解决这个问题。
if (stream.BaseStream.Length != 0)
{
    XDocument xmlInput = XDocument.Load(stream); 
}

但这是不合适的。我只是想知道链接是活的还是不基于我的研究只是添加标题,但即使添加标题我的问题仍然存在

所以请有人能帮我解决这个问题或任何形式的帮助,我将不胜感激

使用c#检查URL是否存在

你可以使用HttpWebRequest和HttpWebResponse类,并将请求的方法设置为"HEAD"。

其他可能的方法列表。

var request = (HttpWebRequest)WebRequest.Create("http://localhost:64519/TestPage.aspx");
request.Method = "HEAD";
var response = (HttpWebResponse)request.GetResponse();
var success = response.StatusCode == HttpStatusCode.OK;

我已经动态创建了一个函数。希望它对你有用:)

public bool isValid(string url) {
    Stream sStream;
    HttpWebRequest urlReq;
    HttpWebResponse urlRes;
    try {
        urlReq = (HttpWebRequest) WebRequest.Create(url);
        urlRes = (HttpWebResponse) urlReq.GetResponse();
        sStream = urlRes.GetResponseStream();
        string read = new StreamReader(sStream).ReadToEnd();
        return true;
    } catch (Exception ex) {
        //Url not valid
        return false;
    }
}

使用GET方法

如果网站响应您的查询,那么获取响应数据…

如果没有这样的URL,则抛出webeexception错误…你可以抓住它,对它做点什么……

这里我列出了我的想法。我想它解决了你的问题

try
{
    HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create("http://localhost:64519/TestPage.aspx");
    webRequest.Method = "GET";
    string responseData = string.Empty;
    HttpWebResponse httpResponse = (HttpWebResponse)webRequest.GetResponse();
    using (StreamReader responseReader = new StreamReader(httpResponse.GetResponseStream()))
    {
        responseData = responseReader.ReadToEnd();
    }
}
catch (System.Net.WebException ex)
{
   //Code - If does not Exist  
}