【问题标题】:How to use Basic Auth with ClientId while calling an API in ASP.NET C#?在 ASP.NET C# 中调用 API 时如何使用带有 ClientId 的基本身份验证?
【发布时间】:2026-02-01 19:50:02
【问题描述】:

我一直在尝试从需要基本授权的 url 获取 API 响应,其中包括 usernamepassword 以及 clientid如果我在 Postman 中调用它,我会收到来自 API 的响应。我想在我的 asp.net c# 项目中尝试同样的事情。但总是得到错误 400 Bad request。 这是我的代码;

NetworkCredential networkCredential = new NetworkCredential(UserName, Password); 
            CredentialCache myCredentialCache = new CredentialCache { { new Uri(url4), "Basic", networkCredential } };

            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url4);
            UTF8Encoding encoding = new UTF8Encoding();

            request.Method = WebRequestMethods.Http.Get;
    request.PreAuthenticate = true;
            request.Credentials = myCredentialCache;
using (WebResponse response = request.GetResponse())    //This is where I get error Bad request
            {
                Console.WriteLine(((HttpWebResponse)response).StatusDescription);
                using (Stream dataStream = response.GetResponseStream())
                {
                    using (StreamReader reader = new StreamReader(dataStream))
                    {
                        //  StreamReader sr = new StreamReader(stream);
                        string strResult = reader.ReadToEnd();
                        for (int i = 0; i < strResult.Length; i++)
                        {
                            if (strResult.Contains(getValue) == true)
                            {
                                Label1.Text = strResult;
                            }
                            else
                            {
                                //error
                            }
                        }
                        reader.Close();
                    }
                }
            }

谁能帮帮我?

【问题讨论】:

    标签: c# asp.net postman


    【解决方案1】:

    请检查一下:

              Uri requestUri = null;
              Uri.TryCreate((linkUrl), UriKind.Absolute, out requestUri);
              NetworkCredential nc = new NetworkCredential(username, password);
              CredentialCache cache = new CredentialCache();
              cache.Add(requestUri, "Basic", nc);
              cache.Add(new Uri(linkUrl), "NTLM", new NetworkCredential("", ""));
    
              // Requesting query string
              HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(requestUri);
              request.Credentials = cache;
    
              // Getting response from WebRequest
              request.Method = WebRequestMethods.Http.Get;
              HttpWebResponse response = (HttpWebResponse)request.GetResponse();
              StreamReader respStream = new StreamReader(response.GetResponseStream());
    

    【讨论】:

    • 我试过这个代码。它仍然给我一个错误,'远程服务器返回错误:(400)错误请求。'在`HttpWebResponse response =(HttpWebResponse)request.GetResponse();`我们必须添加clientId在 api 网址中?
    最近更新 更多