C#HttpWebRequest - 如何在不下载的情况下在HTML和XML页面之间取消?

Roe*_*oey 2 html c# xml xmlreader httpwebrequest

我需要能够通过查看标题或类似的东西(不下载它)来判断链接(URL)是指向XML文件(RSS提要)还是常规HTML文件

对我有什么好建议吗?:)

谢谢!Roey

Eoi*_*ell 11

您可以只执行HEAD请求而不是完整的POST/GET

这将为您提供该页面的标题,其中应包含内容类型.从那以后你应该能够区分它的text/html或xml

这是SO的一个很好的例子

  • +1完美答案和HEAD请求存在的确切原因 (3认同)
  • 只是一个小提醒,一些服务器不支持HEAD,所以不要忘记在失败时回退到GET/POST. (2认同)

Nol*_*rin 5

关注Eoin Campbell的回复,这是一个代码片段,应该使用以下System.Net功能:

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;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

当然,这假设Web服务器发布内容(MIME)类型并正确执行.但是既然你说要想要一种带宽有效的方法,我假设你不想下载所有的标记并进行分析!说实话,通常在任何情况下都能正确设置内容类型.