如何向标头添加授权?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (80)

我有以下代码:

...
AuthenticationHeaderValue authHeaders = new AuthenticationHeaderValue("OAuth2", Contract.AccessToken);
string result = await PostRequest.AuthenticatedGetData(fullUrl, null, authHeaders);
return result; 
...

public static async Task<string> AuthenticatedGetData(string url, FormUrlEncodedContent data, AuthenticationHeaderValue authValue)
{

    HttpClient client = new HttpClient();
    client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue(authValue.Parameter);

    HttpResponseMessage response = await client.PostAsync(new Uri(url), data);

    response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
    response.EnsureSuccessStatusCode();
    string responseBody = await response.Content.ReadAsStringAsync();
    return responseBody;
}

响应:等待部分只是继续一个正在进行的循环,没有发生任何事情。你知道我做错了什么吗?

问题是,如何发送以下标题:

Authorization: OAuth2 ACCESS_TOKEN

到外部web api。

提问于
用户回答回答于
client.DefaultRequestHeaders.Authorization = 
           new AuthenticationHeaderValue(authValue.Parameter);

将产生此标头值。

Authorization: ACCESS_TOKEN

其中ACCESS_TOKENauthValue.Parameter。您希望将传递的值赋值以获取所需的标头。

client.DefaultRequestHeaders.Authorization = authValue;

返回:

Authorization: OAuth2 ACCESS_TOKEN
用户回答回答于

以这种方式添加标题是有效的:

var http = new HttpClient();
http.DefaultRequestHeaders.TryAddWithoutValidation("Authorization", "key=XXX");

扫码关注云+社区

领取腾讯云代金券