リンク (URL) が XML ファイル (RSS フィード) を指しているか、通常の HTML ファイルを指しているかをヘッダーを見るだけで判断できる必要があります。
そこで私に良いアドバイスはありますか?:)
ありがとう!ローイ
リンク (URL) が XML ファイル (RSS フィード) を指しているか、通常の HTML ファイルを指しているかをヘッダーを見るだけで判断できる必要があります。
そこで私に良いアドバイスはありますか?:)
ありがとう!ローイ
完全な POST/GET の代わりに HEAD リクエストを実行できます
これにより、コンテンツ タイプを含む必要があるそのページのヘッダーが取得されます。そこから、text/html か xml かを区別できるはずです。
ここにSOの良い例があります
System.Net
Eoin Campbell の応答に続いて、機能を使用して正確にそれを行うコード スニペットを次に示します。
using (var request = System.Net.HttpWebRequest.Create(
"http://tempuri.org/pathToFile"))
{
request.Method = "HEAD";
using (var response = request.GetResponse())
{
switch (response.ContentType)
{
case "text/xml":
// ...
break;
case "text/html":
// ...
break;
}
}
}
もちろん、これは Web サーバーがコンテンツ (MIME) タイプを正しく公開していることを前提としています。しかし、これを行う帯域幅効率の高い方法が必要だと述べたので、すべてのマークアップをダウンロードして分析したくないと思います! 正直なところ、コンテンツ タイプは通常、どのような場合でも正しく設定されています。
ヘッダーを使用して、Content-Type
帯域幅を節約するために、Web サーバーにドキュメントの指定された部分を提供させることができます。サーバーのAccept-Ranges: bytes
応答にヘッダーが含まれている場合、 を使用Range: bytes=0-10
して最初の 10 バイトのみをダウンロードできます (または何もダウンロードしないようにすることもできます)。
HEAD
の代わりに動詞も調べますGET
。
HttpWebResponse オブジェクトのヘッダーを確認してください。Content-Type ヘッダーは、XML/RSS ドキュメントの場合は text/xml を、標準の Web ページの場合は text/html を読み取る必要があります。
URLを見ただけでは、ファイルの種類がわかりません。
要求したドキュメントの MIME タイプを確認するか、最初の行を読んで、作成者が Doctype を入力していることを確認することをお勧めします。
一般的に言えば、これは不可能です。これは、HTML ファイルまたは XML ファイルのいずれかをアプリケーション/オクテット ストリームとして提供できる (役に立たない) ためです。また、他の人が指摘したように、複数の有効な XML MIME タイプがあります。ただし、HEAD リクエストとコンテンツ タイプ チェックが機能する場合があります。
WebRequest req = WebRequest.Create(url);
WebResponse resp = req.GetResponse();
req.Method = "HEAD";
String contentType = resp.ContentType;
if(contentType == "text/xml")
getXML(url);
else if(contentType == "text/html")
getHTML(url);
ただし、どちらかの方法で処理する場合は、次のことができます。
WebRequest req = WebRequest.Create(url);
WebResponse resp = req.GetResponse();
String contentType = resp.ContentType;
if(contentType == "text/xml")
processXML(resp.GetResponseStream());
else if(contentType == "text/html")
processHTML(resp.GetResponseStream());
else
// process error condition
ファイルは必要に応じてダウンロードされることに注意してください。したがって、応答オブジェクトを要求するだけでは、ファイル全体がダウンロードされるわけではありません。
「テキスト」リーダーで読むだけです。次に、たとえば、頭に浮かぶいくつかのタグを探して、どれが最適かを決定します;)次に、実際のリーダーにそれをチャックします。
それとも単純すぎますか?