使用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);
}
但这是不合适的。我只是想知道链接是活的还是不基于我的研究只是添加标题,但即使添加标题我的问题仍然存在
所以请有人能帮我解决这个问题或任何形式的帮助,我将不胜感激
你可以使用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
}