带有授权和JSON数据的C#HttpClient Post-401未经授权

带有授权和JSON数据的C#HttpClient Post-401未经授权,c#,rest,post,C#,Rest,Post,尝试发送一个post请求(在postman中可以正常工作),但在C#中继续收到401个未经授权的异常。这是我的密码: var httpClient = new HttpClient(); var creds = string.Format("{0}:{1}", "username", "password"); var basicAuth = string.Format("Basic {0}", Convert.ToBase64String(Encoding.UTF8.GetBytes(creds

尝试发送一个post请求(在postman中可以正常工作),但在C#中继续收到401个未经授权的异常。这是我的密码:

var httpClient = new HttpClient();
var creds = string.Format("{0}:{1}", "username", "password");
var basicAuth = string.Format("Basic {0}", Convert.ToBase64String(Encoding.UTF8.GetBytes(creds)));
httpClient.DefaultRequestHeaders.Add("Authorization", basicAuth);

var requestMessage = new HttpRequestMessage(HttpMethod.Post, url);
requestMessage.Content = new StringContent(postData, Encoding.UTF8, "application/json");
requestMessage.Headers.Authorization = new AuthenticationHeaderValue("Basic", "encodedValue==");

var post = httpClient.SendAsync(requestMessage);
post.Wait();
使用HttpWebRequest时也会发生同样的情况:

var webReq = (HttpWebRequest)WebRequest.Create(url);
webReq.Headers.Add("Authorization","Basic encodedValue==");
webReq.Method = "POST";
webReq.ContentType = "application/json";

try
{
    using (var streamWriter = new StreamWriter(webReq.GetRequestStream()))
    {
        streamWriter.Write(json);
        streamWriter.Flush();
        streamWriter.Close();
    }

    var httpResponse = (HttpWebResponse)webReq.GetResponse();
    using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
    {
        response = streamReader.ReadToEnd();
    }
}
有人有什么想法吗?我可以试试吗?
PS(encodedValue==正确编码)

HttpClient在重定向时丢失其头


因此,请确保使用了正确的API地址。如果您的API不允许不安全的连接,但您使用“”而不是“”,它将返回重定向,并且您的客户端将丢失头。

HttpClient将在重定向时丢失其头


因此,请确保使用了正确的API地址。如果您的API不允许不安全的连接,但您使用“”而不是“”,它将返回重定向,并且您的客户端将丢失标题。

Hi这是正确的,因此实际发生的情况是“https:/url”被重定向到“https:/url/”,并且在该操作期间,标题将丢失。正如这里提到的,我在Postman中关闭了自动重定向:然后按照显示的响应-我发现末尾有“/”:)谢谢,这是正确的,所以实际发生的是“https:/url”被重定向到“https:/url/”,并且在这个操作过程中,头丢失了。正如这里提到的,我在Postman中关闭了自动重定向:然后按照显示的响应-我发现末尾有“/”:)谢谢