HttpWebRequest descendant

本文关键字:descendant HttpWebRequest | 更新日期: 2023-09-27 18:18:11

我试图使用而不是通常的HttpWebRequest

// get a login page
HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://www.facebook.com/");   

我配置的类FacebookHttpWebRequest,看起来像这样:

// get a login page
FacebookHttpWebRequest req = (FacebookHttpWebRequest)WebRequest.Create("http://www.facebook.com/");   

下面是配置好的类实现

class FacebookHttpWebRequest : HttpWebRequest
    {
        public FacebookHttpWebRequest() : base()
        {
            this.UserAgent = "Mozilla/5.0 (Windows NT 5.1; rv:8.0.1) Gecko/20100101 Firefox/8.0.1";
            this.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";            
        }
    }

但是出现错误错误

的System.Net。HttpWebRequest'不包含一个构造函数接受0个参数

实际上需要两个参数:serializationInfostreamingContext

那么我怎样才能制作自己的HttpWebRequest后代呢?我知道我可以使用特殊的方法来配置通常的HttpWebRequest,但它会更优雅,有一个特殊的类。

HttpWebRequest descendant

您不需要继承。只需在您自己的工厂中包装创建登录:

static class FacebookWebRequestFactory {
  public static HttpWebRequest Create() {
    var req = (HttpWebRequest)WebRequest.Create("http://www.facebook.com/");
    req.UserAgent = "Mozilla/5.0 (Windows NT 5.1; rv:8.0.1) Gecko/20100101 Firefox/8.0.1";
    req.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";            
    return req;
  }
}

像这样使用:

var req = FacebookWebRequestFactory.Create();