使用c#检查URL是否存在

时间:2013-01-17 11:43:40

标签: c# url

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

我测试了代码

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(stream);没有XML \ 我当然可以使用

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

但它不合适。我只是想知道链接是否有效根据我的研究只是添加标题,但即使添加标题我的问题还没有

所以,有些人可以帮助我,或者任何形式的帮助将不胜感激

3 个答案:

答案 0 :(得分:4)

您可以使用HttpWebRequestHttpWebResponse类,并将请求的方法设置为“HEAD”。

List of other possible Methods.

var request = (HttpWebRequest)WebRequest.Create("http://localhost:64519/TestPage.aspx");
request.Method = "HEAD";

var response = (HttpWebResponse)request.GetResponse();

var success = response.StatusCode == HttpStatusCode.OK;

答案 1 :(得分:1)

我已经实现了功能。希望它适合你:)

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;
    }

}

答案 2 :(得分:1)

使用GET方法

如果网站回复了您的查询,则获取响应数据...

如果没有这样的URL,则会抛出WebException错误... Yoiu可以抓住那个并做点什么......

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

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  
}