1

我一直在试图找出提供 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 情况下,它工作正常,但是当我尝试检查 Link 是否处于活动状态时,它会抛出异常,因为 XDocument.Load(stream); 没有 XML\ 当然我可以通过使用来解决这个问题

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

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

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

4

3 回答 3

4

您可以使用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;
于 2013-01-17T11:56:28.777 回答
1

使用 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  
}
于 2013-01-17T11:59:41.590 回答
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;
    }

}
于 2013-01-17T11:53:50.190 回答