使用 ASP.NET Core 在 POST 请求的标头中包含身份验证
Posted
技术标签:
【中文标题】使用 ASP.NET Core 在 POST 请求的标头中包含身份验证【英文标题】:Including Authentication in the Header of a POST Request using ASP.NET Core 【发布时间】:2021-12-11 08:15:30 【问题描述】:我正在尝试请求接收会话 ID 以与支付网关集成。
var m = System.Text.Encoding.Unicode.GetBytes("merchant." + merchant_Id + ":" + merchant_pass);
var b64Val = Convert.ToBase64String(m);
var SerSession = JsonConvert.SerializeObject(sessionRequest);
var client = new HttpClient();
string _ContentType = "application/json";
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(_ContentType));
client.DefaultRequestHeaders.Add("Authorization", String.Format("Basic 0", b64Val));
var _UserAgent = "d-fens HttpClient";
client.DefaultRequestHeaders.Add("User-Agent", _UserAgent);
HttpContent _Body = new StringContent(SerSession);
]_Body.Headers.ContentType = new MediaTypeHeaderValue(_ContentType);
HttpResponseMessage response;
response = await client.PostAsync(api_URL, _Body);
var content = response.Content.ReadAsStringAsync().Result;
return Ok(content);
我收到了(无效的凭据),我确信我使用的凭据是正确的。我已经在 Python 和 php 中对它们进行了测试。
【问题讨论】:
【参考方案1】:试试这个
var authenticationString = $"merchant_Id:merchant_pass";
var base64EncodedAuthenticationString = Convert.ToBase64String(System.Text.ASCIIEncoding.ASCII.GetBytes(authenticationString));
client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Basic", base64EncodedAuthenticationString);
【讨论】:
终于成功了。非常感谢:) @AhmedDawoodSalman 随时欢迎您!如果有用,请不要忘记接受答案。其他人应该知道它正在工作。您可以通过单击答案一侧的复选标记来接受。以上是关于使用 ASP.NET Core 在 POST 请求的标头中包含身份验证的主要内容,如果未能解决你的问题,请参考以下文章
为啥我的 Asp.Net Core 日志中出现“不支持 POST 请求”?
asp.net core webapi Post接收不到ajax请求数据
模型绑定不适用于 ASP.NET Core 2 WebAPI 中的 POST 请求
带有 JSON 数据的大型 POST 请求在 ASP.NET Core 4.6.1 中未反序列化
如何将两个数组作为 POST 请求参数从 AJAX 发送到 MVC 控制器(ASP .NET Core 3.1 剃须刀)?
本地 Javascript Fetch Post 请求失败,调用 ASP.NET Core 2.2 Web API。 CORS 已启用