【问题标题】:Including Authentication in the Header of a POST Request using ASP.NET Core使用 ASP.NET Core 在 POST 请求的标头中包含身份验证
【发布时间】: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 中对它们进行了测试。

【问题讨论】:

    标签: c# asp.net-core .net-core asp.net-web-api asp.net-core-webapi


    【解决方案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 随时欢迎您!如果有用,请不要忘记接受答案。其他人应该知道它正在工作。您可以通过单击答案一侧的复选标记来接受。
    猜你喜欢
    • 2021-11-20
    • 2020-05-06
    • 2023-03-29
    • 1970-01-01
    • 2016-05-04
    • 2018-02-16
    • 1970-01-01
    • 2016-03-15
    • 2019-05-11
    相关资源
    最近更新 更多