【问题标题】:Custom implementation of httpclienthttpclient的自定义实现
【发布时间】:2018-06-08 00:18:06
【问题描述】:

我有一个需要在请求标头中发送自定义身份验证令牌的 WebAPI。

using (var client = new HttpClient()
{
     client.BaseAddress = new Uri("https://example.com");
     var request = new HttpRequestMessage(HttpMethod.Post, "/adfs/oauth2/authorize);
client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", "<token>");
    ...
    ...
    //code removed for brevity

}

因为很多操作都将调用这些确切的代码行。我计划创建一个已实现的 HttpClient 类,如下所示。此类的对象需要已初始化所有自定义实现。这个可以吗?

public class MyHttpClient : HttpClient
{
    //how do I make sure the object of MyHttpClient will implicitly set all the desired properties (headers etc)
}


using (var client = new MyHttpClient()
{
   //client should come with all the properties initialized
}

【问题讨论】:

  • 在你的构造函数中添加它
  • 你能澄清一下你使用的标签有 web api 2 和 asp.net core web api,它们是框架的两个独立版本。

标签: asp.net-web-api asp.net-web-api2 httpclient asp.net-core-webapi


【解决方案1】:

您可以在派生类的构造函数中添加默认属性。

例如

public class MyHttpClient : HttpClient {

    public MyHttpClient(): base() {
        BaseAddress = new Uri("https://example.com");
        DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", "<token>");
        //...
        //...
        //code removed for brevity
    }
}

【讨论】:

    猜你喜欢
    • 2011-06-15
    • 2019-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-01
    • 2014-10-14
    • 2011-06-04
    • 2010-10-29
    相关资源
    最近更新 更多