【发布时间】:2011-03-17 04:25:30
【问题描述】:
我会假设答案是否定的,但是...... 有没有办法使用 WebClient 发送 HEAD 方法并将标头作为字符串或类似的东西返回?
【问题讨论】:
我会假设答案是否定的,但是...... 有没有办法使用 WebClient 发送 HEAD 方法并将标头作为字符串或类似的东西返回?
【问题讨论】:
你是对的 WebClient 不支持这个。如果你想要这个功能,你可以使用 HttpWebRequest 并将方法设置为 HEAD:
System.Net.WebRequest request = System.Net.WebRequest.Create(uri);
request.Method = "HEAD";
request.GetResponse();
【讨论】:
另一种方法是从 WebClient 继承并覆盖 GetWebRequest(Uri address)。
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;
}
}
【讨论】:
var wc = new ExWebClient(); 而不是 var wc = new WebClient();
我请求的大多数网络服务器都会接受这种方法。但是,并非每个 Web 服务器都这样做。例如,IIS6 有时会接受请求方法。
这是当方法不被允许时返回的状态码...
catch (WebException webException)
{
if (webException.Response != null)
{
//some webservers don't allow the HEAD method...
if (((HttpWebResponse) webException.Response).StatusCode == HttpStatusCode.MethodNotAllowed)
谢谢, 迈克
【讨论】: