如何获取网址的内容类型?

时间:2012-08-14 02:59:44

标签: c# .net c#-4.0 content-type

我想获得一个网址类型。例如,this是一个Html页面,其页面类型为text/html,但this 的类型为text/xmlthis页面的类型似乎是image/png,但它是text/html

我想知道如何检测this等网址的内容类型?

5 个答案:

答案 0 :(得分:10)

它应该是这样的

    var request = HttpWebRequest.Create("http://www.google.com") as HttpWebRequest;
    if (request != null)
    {
        var response = request.GetResponse() as HttpWebResponse;

        string contentType = "";

        if (response != null)
            contentType = response.ContentType;
    }

答案 1 :(得分:0)

HTTP响应标头:content-type

如需更详细的回复,请提供更详细的问题。

答案 2 :(得分:0)

您可以通过响应的Http标头检测Content-Type,对于http://bayanbox.ir/user/ahmadalli/images/div.png,标题是

Connection:keep-alive
Content-Encoding:gzip
Content-Type:text/html; charset=utf-8
Date:Tue, 14 Aug 2012 03:01:41 GMT
Server:bws
Transfer-Encoding:chunked
Vary:Accept-Encoding

答案 3 :(得分:0)

using (MyClient client = new MyClient())
    {
        client.HeadOnly = true;
        string uri = "http://www.google.com";
        byte[] body = client.DownloadData(uri); // note should be 0-length
        string type = client.ResponseHeaders["content-type"];
        client.HeadOnly = false;
        // check 'tis not binary... we'll use text/, but could
        // check for text/html
        if (type.StartsWith(@"text/"))
        {
            string text = client.DownloadString(uri);
            Console.WriteLine(text);
        }
    }

无需下载页面即可从标题中获取mime类型。只需在响应标头中查找内容类型。

答案 4 :(得分:0)

阅读HTTP标题。

HTTP标头会告诉您内容类型。例如:

  

content-type:application / xml。

有两种方法可以确定内容类型

  1. 由网址
  2. 调用的文件扩展名
  3. http header content-type
  4. 第一个在过去的某些时候被微软推广,不再是一个好习惯了。

    如果客户端的显示约束只接受某种内容类型,它会向服务器请求标题

    accept: application/json
    accept: text/html
    accept: application/xml
    

    然后,如果服务器可以提供其中一个并选择XML,那么它将返回带有标题

    的内容
    content-type: application/xml.
    

    但是,某些服务包含更多信息,如

    content-type: application/xml; charset=utf-8
    

    而不是使用自己的标题进行字符编码。