【问题标题】:Invoke Url to check content type?调用 URL 来检查内容类型?
【发布时间】:2012-10-24 15:52:31
【问题描述】:

我需要检查 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;
}

【问题讨论】:

    标签: c# asp.net httpwebrequest request response


    【解决方案1】:

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

    您还需要关闭/处理请求,因为它是一次性对象。在GetResponse的注释中指定:

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

    旁注:考虑发出 HEAD 请求,这样您就不会收到任何流(请参阅 Method property 了解用法)。

    var request = (HttpWebRequest)WebRequest.Create(url);
    request.Method = "HEAD";
    

    【讨论】:

    • +1 用于建议 HEAD 请求,这与 OP 的情况特别相关。
    猜你喜欢
    • 1970-01-01
    • 2014-07-25
    • 2012-04-28
    • 1970-01-01
    • 1970-01-01
    • 2013-09-16
    • 1970-01-01
    • 2020-10-28
    • 1970-01-01
    相关资源
    最近更新 更多