gpt4 book ai didi

c# - 具有基本身份验证的 GET 请求适用于 Postman,但不适用于 C#

转载 作者:行者123 更新时间:2023-12-05 08:04:22 26 4
gpt4 key购买 nike

我有以下带有 Basic Auth 的简单 GET 请求,它在 Postman 中运行良好:

enter image description here

然后我只需将 postman 中的 C# - RestSharp 代码片段复制/粘贴到一个简单的控制台应用程序中:

class Program
{
static void Main(string[] args)
{
var client = new RestClient("https://.....");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
request.AddHeader("X-CSRF-Token", "Fetch");
request.AddHeader("Authorization", "Basic U0.....==");
IRestResponse response = client.Execute(request);

....

但响应是:401 Not Authorized

到目前为止,我一直使用 Postman 自动生成的代码片段,没有出现任何问题。但现在我面临这个问题,显然用 C# 代码发出的请求中缺少某事。

任何建议或指示将不胜感激!

更新:在 Windows 10 上使用 curl 请求工作正常。这是我使用的:

curl --location --request GET "https://....." --header "X-CSRF-Token: Fetch" --header "Authorization: Basic ......"

在这两种情况下,授权 token 完全相同,在 curl 中,它在 RestSharp 中有效,但在 RestSharp 中无效。

最佳答案

这不是一个很好的答案,但我认为您的 C# 示例中缺少您的 Postman 请求中的某些其他 header 或属性。

为了仔细检查,我根据您的示例使用了没有用户名和密码的 Postman 请求。然后我复制了标题字符串 copied the header from Postman

稍后进行快速单元测试,我使用的代码之前有很多次(与评论非常相似)

    [Test]
public void PostmanEncodesCredentialsProperly()
{
var password = "a temporary cred";
var expected = "Basic OmEgdGVtcG9yYXJ5IGNyZWQ=";

var header = GetBasicAuthHeader(string.Empty, password);

Assert.That(header, Is.EqualTo(expected));
}

private string GetBasicAuthHeader(string user, string password)
{
var cred = $"{user}:{password}";
var encoded = Convert.ToBase64String(Encoding.UTF8.GetBytes(cred));
return $"Basic {encoded}";
}

表明 Postman 编码的完全符合您的预期。

关于c# - 具有基本身份验证的 GET 请求适用于 Postman,但不适用于 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69246219/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com