URLがあります。次に、URL の内容を調べたいと思います。URL のコンテンツとは、URL に HTML ページ、ビデオ、または画像/写真が含まれているかどうかを意味します。c#を使用してasp.netでこれを行うにはどうすればよいですか。
1321 次
4 に答える
5
最も簡単な方法は、次のコマンドでHEADリクエストを実行することですHttpWebRequest
。
var req = (HttpWebRequest)WebRequest.Create(url);
req.Method = "HEAD";
using (var response = (HttpWebResponse)req.GetResponse())
{
// Here, examine the response headers.
// In particular response.ContentType
}
場合によっては、HEADで405エラーが発生することがあります。これは、サーバーがHEADをサポートしていないことを意味します。
その場合は、GETリクエスト(change req.Method = "GET"
)を実行してください。これでページのダウンロードが開始されますが、コンテンツタイプヘッダーは引き続き表示できます。
于 2013-03-11T13:10:35.967 に答える
0
リンクをたどり、結果を取得し、ファイルの内容からそれがどのファイルであるかを判断する (これはかなりトリッキーです) ことを除いて、絶対確実な方法はありません。
ファイル拡張子または返されたcontent-type
ヘッダー (HEAD
要求を発行することができます) から、タイプがどうあるべきかを判断することができます。これにより、サーバーが要求するファイルの種類がわかります。
于 2013-03-11T13:10:13.980 に答える
0
テストを簡単にするために、これはコンソール アプリケーションですが、ASP.NET でも同じように動作するはずです。
namespace ConsoleApplication1
{
using System;
using System.Net;
class Program
{
static void Main()
{
//var request = WebRequest.Create("https://www.google.com"); // page will result in html/text
var request = WebRequest.Create(@"https://www.google.de/logos/2013/douglas_adams_61st_birthday-1062005.2-res.png");
request.Method = "HEAD"; // only request header information, don't download the whole file
var response = request.GetResponse();
Console.WriteLine(response.ContentType);
Console.WriteLine("Done.");
Console.ReadLine();
}
}
}
于 2013-03-11T13:19:55.883 に答える