如何使用 HttpClient 在 Web api 中传递标头值

Posted

技术标签:

【中文标题】如何使用 HttpClient 在 Web api 中传递标头值【英文标题】:How to pass header values in web api using HttpClient 【发布时间】:2017-03-22 21:36:44 【问题描述】:

我是 ASP.NET Web API 2 的新手。我正在尝试访问第三方 API,因此要首先访问它,我需要在带有 API URL 的标头中传递一个授权令牌。我可以使用 Postman 访问数据,但无法使用 Code。

以下是我的代码,我不确定我是否朝着正确的方向前进。任何帮助,将不胜感激。

using (var client = new HttpClient())

    client.BaseAddress = new Uri("Url");
    client.DefaultRequestHeaders.Accept.Clear();
    client.DefaultRequestHeaders.Accept.Add(new HttpContext.Current.Request.Headers.Add("Authorization", "Token "+ "MyToken");
    var re = Request;
    var headers = re.Headers;

     if (headers.Contains("Token"))
     
         string token = headers.GetValues("Token").First();
     

     return null;

 

【问题讨论】:

显示与邮递员一起使用的(已清理的)原始请求 【参考方案1】:

如果为其所有请求设置HttpClient 的默认授权标头,请在client.DefaultRequestHeaders.Authorization 上设置AuthenticationHeaderValue

就像下面的例子...

//...other code removed for brevity

var tokenType = "Token"; //Other APIs use Bearer or other auth types.
var token = "MyToken";
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue(tokenType, token);

//...other code removed for brevity.

任何使用客户端发出的请求都会有一个授权标头

Authorization Token MyToken

【讨论】:

以上是关于如何使用 HttpClient 在 Web api 中传递标头值的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C# 中使用 HttpClient 读取 Web api 响应

如何使用 HttpClient 将 JSON 数据发布到 Web API

如何使用存储在会话存储中的访问令牌使用 HttpClient 进行 Web api 调用?

如何在使用 HttpClient 使用 Asp Net Web Api 的 Asp Net Mvc 中提供实时数据?

如何实现HttpClient + Web Api架构下数据的压缩

服务器强制关闭HttpClient时如何进行trap