【问题标题】:Extending HttpWebRequest扩展 HttpWebRequest
【发布时间】:2013-03-02 12:23:08
【问题描述】:
class AdvancedWebRequest : HttpWebRequest {
    private static readonly ILog log = log4net.LogManager.GetLogger(typeof(AdvancedWebRequest));

    public AdvancedWebRequest(string url, CookieContainer cookies = null) {
        Create(url);
        UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22";
        Referer = Address.AbsoluteUri;

        if (cookies == null) {
            CookieContainer = Program.request.CookieContainer;
        } else {
            CookieContainer = cookies;
        }
    }
}

这是我想做的事情,所以基本上获取已经设置了一些变量的HttpWebRequest,所以我不能总是自己设置它们。

得到错误:

'System.Net.HttpWebRequest.HttpWebRequest()' is obsolete: 'This API supports the .NET Framework infrastructure and is not intended to be used directly from your code.' \Extensions\AdvancedWebRequest.cs   14  10  

有什么建议,HttpWebRequest真的不能扩展吗?

【问题讨论】:

  • 真的需要继承HttpWebRequest类吗?对于一些工作,我创建了一些函数来简化 HttpWebRequests,也许它对你有用:gist.github.com/anonymous/4347248
  • @Tearsdontfalls :继承它会非常好,因为从WebRequest 我根本无法设置cookiesrefereruseragent
  • 好的,那么你可以试试扩展方法 msdn.microsoft.com/en-us/library/vstudio/bb383977.aspx
  • @Tearsdontfall :这是我不知道的好功能,您可以将其发布为答案,因为我相信有人会喜欢该解决方案。

标签: c# .net httpwebrequest


【解决方案1】:

你不能从HttpWebRequest继承,但你可以从WebRequest继承

查看类似问题here的答案。

【讨论】:

    【解决方案2】:

    你可以像这样使用扩展方法:

    public static DoRequest(this HttpWebRequest req){
    //do something
    }
    

    然后你可以像这样调用这个方法:

    webrequest.DoRequest();
    

    欲了解更多信息,请查看 MSDN 页面:http://msdn.microsoft.com/en-us/library/vstudio/bb383977.aspx

    【讨论】:

      猜你喜欢
      • 2011-03-15
      • 1970-01-01
      • 1970-01-01
      • 2019-02-25
      • 2020-09-10
      • 2014-09-23
      • 2020-12-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多