Как использовать Basi c Auth с ClientId при вызове API в ASP. NET C#? - PullRequest
0 голосов
/ 12 июля 2020

Я пытался получить ответ API с URL-адреса, для которого требуется базовая c авторизация, включая имя пользователя и пароль вместе с clientid в заголовок, поскольку я получаю ответ от API, если вызываю его в Postman . Я хочу попробовать то же самое в моем проекте asp. net c#. Но всегда получаю ошибку 400 Плохой запрос. Вот мой код:

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();
                    }
                }
            }

Кто-нибудь может мне помочь?

1 Ответ

0 голосов
/ 12 июля 2020

Пожалуйста, проверьте:

          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());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...