繁体   English   中英

使用C#检查URL是否存在

[英]Check URL exists using c#

我一直试图找出提供URL是否可用。 可用并不意味着域可用性,我是指URL可以访问或不能访问

我已经测试过代码

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

并且在Testpage的pageload上有一些代码

protected void Page_Load(object sender, EventArgs e)
{
    StreamReader stream = new StreamReader(Request.InputStream);
    XDocument xmlInput = XDocument.Load(stream);
}

现在的问题甚至是我在请求中添加了HEAD,但它仍进入PageLoad并引发异常。

场景:我一直在尝试将XML发送到提供的URL。 在XML情况下,它可以正常工作,但是当我尝试检查Link是否处于活动状态时,它会抛出异常,因为XDocument.Load(stream); 没有XML \\当然我可以通过使用解决问题

if (stream.BaseStream.Length != 0)
{
    XDocument xmlInput = XDocument.Load(stream); 
}

但它不合适。 我只是想知道链接是否存在,根据我的研究只是添加标题,但是即使添加标题,我的问题仍然存在

所以请有人可以帮我解决这个问题,不胜感激

您可以使用HttpWebRequestHttpWebResponse类,并将请求的“方法”设置为“ 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,那么它将引发WebException错误。

在这里,我列出了我的想法。 我认为它可以解决您的问题

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  
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM