D'une manière générale, c'est impossible. C'est parce qu'il est possible (bien que peu utile) de servir des fichiers HTML ou XML en tant que application/octet-stream. En outre, comme indiqué par d'autres, il existe plusieurs types MIME XML valides. Cependant, une requête HEAD puis vérification de type de contenu peut parfois fonctionner:
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);
Mais si vous allez le traiter en quelque sorte de toute façon, vous pouvez le faire:
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
Gardez à l'esprit, les fichiers sont téléchargé au besoin.Donc, demander simplement l'objet réponse ne provoque pas le téléchargement du fichier entier.
+1 la réponse parfaite et la raison exacte de l'existence de la requête HEAD –
Juste un petit rappel que certains serveurs ne supportent pas HEAD, alors n'oubliez pas de revenir à GET/POST en cas d'échec –
Je compte un "pourrait" et deux "devraient". ;] – bzlm