我一直试图找出提供的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);
}
但它不合适。我只是想知道链接是否有效根据我的研究只是添加标题,但即使添加标题我的问题还没有
所以,有些人可以帮助我,或者任何形式的帮助将不胜感激
答案 0 :(得分:4)
您可以使用HttpWebRequest和HttpWebResponse类,并将请求的方法设置为“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
}