调用Url来检查内容类型?

时间:2012-10-24 15:52:31

标签: c# asp.net httpwebrequest request response

我需要检查网址内容类型是否为pdf?我有一个工作代码,但我想知道什么是最好的方式来检查我有什么。我不需要显示pdf,只需要检查内容类型是否为pdf? 注意:此方法将使用不同的网址多次调用,因此我不确定是否需要关闭响应。

这是我的代码。

private bool IsValid(string url)
{
    bool isValid = false;
    var request = (HttpWebRequest)WebRequest.Create(url);
    var response = (HttpWebResponse)request.GetResponse();
    if(response.StatusCode == HttpStatusCode.OK && response.ContentType == "application/pdf")
    {
       isValid = true;
    }
    response.Close();
  return isValid;
}

1 个答案:

答案 0 :(得分:7)

是的,因为您没有将response传递给您需要处理它的任何地方。您还应该捕获WebException并从那里处理流(我也希望处理响应甚至请求将关闭所有相关资源,但遗憾的是我从未见过确认Response对象的级联处置行为的文档。)

您还需要关闭/处置请求,因为它是一次性使用对象。它在GetResponse

的注释中指定
  

对GetResponse的多次调用返回相同的响应对象;请求不会重新发布。

附注:考虑提出HEAD请求,以便您根本不会获得任何流(请参阅Method property了解)。

var request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "HEAD";
相关问题