使用 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 请求的标头中包含身份验证的主要内容,如果未能解决你的问题,请参考以下文章