2

URLがあります。次に、URL の内容を調べたいと思います。URL のコンテンツとは、URL に HTML ページ、ビデオ、または画像/写真が含まれているかどうかを意味します。c#を使用してasp.netでこれを行うにはどうすればよいですか。

4

4 に答える 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

おそらく を使用して開始しWebClient、ページにアクセスしてダウンロードします。次に、HTML パーサーと最適と思われる方法を使用して、ページ上のコンテンツの種類を判断します。

于 2013-03-11T13:09:49.160 に答える
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 に答える