[英]Basic authentication in HTTP Post request
我正在编写一个简单的 HTTP 发布请求,它将向服务器发送一些数据。
代码片段:
HttpClient client = new HttpClient();
var name = _context.Users.FirstOrDefault(u => u.Id == UserId.FirstName)
var surname = _context.Users.FirstOrDefault(s => s.Id == UserId.LastName)
var message = new Message
{
FirstName = message.FirstName
LastName = message.LastName
}
var authenticationString = $"{name}:{surname}";
var base64EncodedAuthenticationString=
Convert.ToBase64String(System.Text.ASCIIEncoding.UTF8.GetBytes(authenticationString));
var content = new StringContent(message.ToString() ?? String.Empty, Encoding.UTF8);
content.Headers.Add("Authorization", "Basic" + base64EncodedAuthenticationString);
var response = await client.PostAsync("https://mywebsite.com", content);
var responseString = await response.Content.ReadAsStringAsync();
当我调试这个代码片段时,我得到异常错误,它说:
“滥用 header 名称,‘授权’。确保请求标头与 HttpRequestMessage 一起使用,响应标头与 HttpResponseMessage 一起使用,内容标头与 HttpContent 对象一起使用。”
如何解决? 如果没有基本身份验证,我会从服务获得响应 401(未经授权),但我需要获取代码 200(好的),如果没有基本身份验证,我将无法实现。
代码中有两个问题:
Basic
和凭据之间应该有一个空格。Authorization
header; 这应该移动到请求标头,例如通过使用DefaultRequestHeaders
属性来代替:client.DefaultRequestHeaders.Add(
"Authorization",
"Basic " + base64EncodedAuthenticationString);
在基本身份验证中,您需要在Basic
和身份验证字符串之间留一个空格。 所以它将是content.Headers.Add("Authorization", "Basic " + base64EncodedAuthenticationString);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.