Ich gehe davon aus, die Antwort ist nein, aber .... Gibt es eine Möglichkeit, WebClient zu verwenden, um die HEAD-Methode zu senden und die Header als String oder ähnliches zurückzugeben?HEAD mit WebClient?
Antwort
Sie haben Recht Der WebClient unterstützt dies nicht. Sie können HttpWebRequest verwenden und das Verfahren eingestellt HEAD, wenn Sie diese Funktionalität wünschen:
System.Net.WebRequest request = System.Net.WebRequest.Create(uri);
request.Method = "HEAD";
request.GetResponse();
Die meisten Web-Server, die ich von fordern wird diese Methode akzeptieren. Nicht jeder Webserver tut dies jedoch. IIS6 beispielsweise wird die Anfrage-Methode SOMETIMES berücksichtigen.
Dies ist der Statuscode, der zurückgegeben wird, wenn eine Methode ist nicht erlaubt ...
catch (WebException webException)
{
if (webException.Response != null)
{
//some webservers don't allow the HEAD method...
if (((HttpWebResponse) webException.Response).StatusCode == HttpStatusCode.MethodNotAllowed)
Danke, Mike
Ein anderer Weg ist von WebClient zu erben und GetWebRequest(Uri address) außer Kraft setzen.
public class ExWebClient : WebClient
{
public string Method
{
get;
set;
}
protected override WebRequest GetWebRequest(Uri address)
{
WebRequest webRequest = base.GetWebRequest(address);
if (!string.IsNullOrEmpty(Method))
webRequest.Method = Method;
return webRequest;
}
}
+1 als Webclient ist viel einfacher zu bedienen. –
Für einen Neuling, wie rufe ich diese überschriebene Klasse auf? – bendecko
'var wc = neuer ExWebClient();' statt 'var wc = neuer WebClient();' – tomfanning
Dies beantwortet nicht die Frage, ob WebClient das Senden einer HEAD-Anfrage unterstützt. –