Вообще-то это невозможно. Это связано с тем, что возможно (хотя и бесполезно) служить либо HTML, либо XML-файлами в качестве приложения/октетного потока. Кроме того, как отмечают другие, существует несколько допустимых типов mime XML. Тем не менее, запрос ГОЛОВА затем проверить тип содержимого может работать иногда:
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
Имейте в виду, файлы загружаемый по мере необходимости.Поэтому просто запрос объекта ответа не вызывает загрузку всего файла.
+1 идеальный ответ и точная причина существования запроса HEAD –
Просто небольшое напоминание, что некоторые серверы не поддерживают HEAD, поэтому не забудьте вернуться к GET/POST, когда он не работает. –
Я считаю, что один «может» и два «должен». ;] – bzlm