Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 调用Url检查内容类型?_C#_Asp.net_Httpwebrequest_Request_Response - Fatal编程技术网

C# 调用Url检查内容类型?

C# 调用Url检查内容类型?,c#,asp.net,httpwebrequest,request,response,C#,Asp.net,Httpwebrequest,Request,Response,我需要检查url内容类型是否为pdf?我有一个工作代码,但我想知道什么是最好的方式来检查从我所拥有的。我不需要显示pdf,只需要检查内容类型是否为pdf? 注意:此方法将使用不同的url多次调用,因此我不确定是否需要关闭响应。 这是我的密码 private bool IsValid(string url) { bool isValid = false; var request = (HttpWebRequest)WebRequest.Create(url); var re

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

这是我的密码

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

是的,因为您没有将
响应传递到需要处理它的任何位置。您还应该捕获WebException并从中释放流(我还希望disposing response甚至request会关闭所有相关资源,但不幸的是,我从未见过确认响应对象的这种级联dispose行为的文档)

您还需要关闭/处置请求,因为它是一个使用对象。注释中规定了:

对GetResponse的多个调用返回相同的响应对象;请求未重新发出

边注:考虑制作头部请求,这样你根本没有得到任何流(参见使用)。


+1用于建议
标题
请求,这与OP的情况特别相关。
var request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "HEAD";