如何在ASP.NET Core中使用HTTP基本授权发送HTTP POST请求?

22 浏览
0 Comments

如何在ASP.NET Core中使用HTTP基本授权发送HTTP POST请求?

我正在尝试在我的ASP.NET Core MVC应用中使用Reddit API (https://github.com/reddit-archive/reddit/wiki/OAuth2),为了获取令牌,我必须向一个带有HTTP基本授权的URI进行POST请求(用户名和密码是客户端ID和密钥)。目前我使用了以下代码:

public async Task HttpPost(string uri, string value)
{
    HttpClient httpClient = new HttpClient();
    HttpResponseMessage httpResponseMessage = await httpClient.PostAsync(uri, new StringContent(value));
    return httpResponseMessage;
}

然而,这不使用授权。我该如何添加授权?我尝试查看HttpClient.PostAsyncHttpContent的文档,但没有找到相关的内容。

0
0 Comments

在ASP.NET Core中如何使用HTTP基本授权发送HTTP POST请求?

在ASP.NET Core中,如果你需要发送带有HTTP基本授权的HTTP POST请求,你需要执行以下步骤:

1. 首先,你需要创建一个格式为username:password的Base64编码字符串。

2. 然后,将该字符串添加到HTTP请求的Authorization头部中。

下面是一个示例代码:

using (var client = new HttpClient { BaseAddress = new Uri("https://baseUrl") })
{
    var authString = Convert.ToBase64String(Encoding.UTF8.GetBytes("username:password"));
    client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Basic", authString);
    var response = await client.PostAsync(requestUri, new StringContent(value));
}

在这个示例中,我们首先创建了一个HttpClient对象,并设置了请求的基地址。

然后,我们使用Encoding.UTF8.GetBytes方法将username:password字符串转换为字节数组,并使用Convert.ToBase64String方法将其转换为Base64编码的字符串。

接下来,我们将该Base64编码的字符串添加到HTTP请求的Authorization头部中,使用client.DefaultRequestHeaders.Authorization属性。

最后,我们使用client.PostAsync方法发送HTTP POST请求,并传递请求的URI和要发送的内容。

通过这样的步骤,你就可以在ASP.NET Core中使用HTTP基本授权发送HTTP POST请求了。

0