Webアドレスの種類を取得したい。たとえば、これはHtmlページであり、そのページタイプはですtext/html
が、このタイプはですtext/xml
。このページのタイプはそうですがimage/png
、そうtext/html
です。
このようなWebアドレスのコンテンツタイプを検出するにはどうすればよいですか?
このようなものでなければなりません
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;
}
HTTP応答ヘッダー:content-type
より詳細な回答については、より詳細な質問を提供してください。
Content-Type
応答のHttpヘッダーで検出できます。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
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タイプを取得します。応答ヘッダーでcontent-typeを探すだけです。
HTTPヘッダーを読んでください。
HTTPヘッダーは、コンテンツタイプを示します。例えば:
コンテンツタイプ:application/xml。
コンテンツタイプを決定する方法は2つあります
最初のものは、昔からマイクロソフトによっていくらか宣伝されており、もはや良い習慣ではありません。
クライアントに特定のコンテンツタイプのみを受け入れる表示制約がある場合、クライアントは次のようなヘッダーを使用してサーバーに要求します。
accept: application/json
accept: text/html
accept: application/xml
そして、サーバーがそれらの1つを提供し、XMLを選択できる場合、ヘッダー付きのコンテンツを返します。
content-type: application/xml.
ただし、一部のサービスには、次のような詳細情報が含まれています
content-type: application/xml; charset=utf-8
文字エンコードに独自のヘッダーを使用するのではなく。