gpt4 book ai didi

c# - 为来自 web.config 文件的 http 请求配置身份验证

转载 作者:太空宇宙 更新时间:2023-11-03 12:50:20 25 4
gpt4 key购买 nike

因此,我需要从 C# 到 Web API 执行大量请求,并且它们需要基本身份验证。我知道我可以做这样的事情:

var httpWebRequest = (HttpWebRequest)WebRequest.Create("http://url");

String username = "abc";
String password = "123";
String encoded = Convert.ToBase64String(System.Text.Encoding.GetEncoding("ISO-8859-1").GetBytes(username + ":" + password));
httpWebRequest.Headers.Add("Authorization", "Basic " + encoded);
httpWebRequest.ContentType = "application/json";
httpWebRequest.Method = "POST";

但我不想为每个请求手动将凭据添加到 header 中。我想知道是否有一种方法可以全局验证我的所有请求(来自 web.config,可能类似于用于 sql 连接的 connectionStrings?)。

最佳答案

您可以创建一个继承 HttpClient 的类,并按照您的建议从 web.config 获取用户名和密码

public class AuthenticatedClient : HttpClient
{
public AuthenticatedClient()
{
string password = ConfigurationManager.AppSettings["Password"];
string userName = ConfigurationManager.AppSettings["UserName"];
string encoded = Convert.ToBase64String(System.Text.Encoding.GetEncoding("ISO-8859-1").GetBytes(userName + ":" + password));

BaseAddress = new Uri("http://url");
DefaultRequestHeaders.Add("Authorization", "Basic " + encoded);
DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
}
}

在 web.config 中

<appSettings>
<add key="UserName" value="abc" />
<add key="Password" value="123" />
</appSettings>

然后无论你想在哪里发出请求,都可以像标准的 HttpClient 一样使用它

StringContent stringContent = new StringContent("json request string", UnicodeEncoding.UTF8, "application/json");

using (var client = new AuthenticatedClient())
{
HttpResponseMessage response = await client.PostAsync("/api/whatever", stringContent);
}

关于c# - 为来自 web.config 文件的 http 请求配置身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35796055/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com