提问人: 提问时间:7/17/2010 更新时间:10/12/2012 访问量:11163
带有 WebClient 的 HEAD?
HEAD with WebClient?
答:
30赞
btlog
7/17/2010
#1
你是对的,WebClient 不支持这个。如果需要此功能,可以使用 HttpWebRequest 并将方法设置为 HEAD:
System.Net.WebRequest request = System.Net.WebRequest.Create(uri);
request.Method = "HEAD";
request.GetResponse();
4赞
arachnode.net
9/19/2012
#2
我请求的大多数 Web 服务器都将接受此方法。但是,并非每个 Web 服务器都这样做。例如,IIS6 将遵循请求方法 SOMETIMES。
这是不允许使用方法时返回的状态代码...
catch (WebException webException)
{
if (webException.Response != null)
{
//some webservers don't allow the HEAD method...
if (((HttpWebResponse) webException.Response).StatusCode == HttpStatusCode.MethodNotAllowed)
谢谢 话筒
评论
0赞
Lynn Crumbling
5/16/2017
这并不能回答 WebClient 是否支持发送 HEAD 请求的问题。
18赞
xrustal
10/12/2012
#3
另一种方法是从 WebClient 继承并重写 GetWebRequest(Uri 地址)。
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赞
bendecko
4/8/2014
对于新手,我如何称呼这个被覆盖的类?
0赞
tomfanning
9/5/2016
var wc = new ExWebClient();
而不是var wc = new WebClient();
0赞
dyslexicanaboko
7/9/2018
@bendecko,由于访问修饰符是受保护的,因此无法从类外部调用它。但是,您可以只创建一个 Facade 方法来调用受保护的方法,最坏的情况。Ex: public WebRequest GetWebRequest2(Uri address) { return GetWebRequest(uri); } //请使用比 GetWebRequest2 更好的名称
评论