(ssg-wsg) 错误:不允许访问此 API

问题描述

我尝试连接到以下 API https://api.ssg-wsg.sg/grantCalculators/individual。我收到以下错误“不允许访问此 API”。这些技能 Future API 是否存在任何 UAT?谢谢!

我的订阅 [1]:https://i.stack.imgur.com/5ZgiQ.jpg

我的代码 尝试 {

            if (Session["access_token"]==null)
            {
                txtResult.Text = "Generate Token first.";
                    return;
            }                

            ServicePointManager.Expect100Continue = true;
            ServicePointManager.DefaultConnectionLimit = 9999;
            ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
           // string url = "https://mock-api.ssg-wsg.sg/grantCalculators/individual";
            string url = "https://public-api.ssg-wsg.sg/grantCalculators/individual";
            // string url = "https://api.ssg-wsg.sg/grantCalculators/individual";
            // string data = "{\"trainingPartnerUen\":\"198201025C11\",\"courseReferenceNumber\":\"TGS-0026008-ES\"}";
            string data = "{\"trainingPartnerUen\":\"" + txtUEN.Text + "\",\"courseReferenceNumber\":\"";
            data+=txtReferenceNumber.Text+ "\",\"}";
            //url = url + data;
            WebRequest myReq = WebRequest.Create(url);              
            myReq.Method = "POST";
            string accesTocken = Session["access_token"].ToString();
            myReq.ContentType =  "application/json";
            using (var streamWriter = new StreamWriter(myReq.GetRequestStream()))
            { 
                streamWriter.Write(data);
            }
           
            myReq.Headers.Add("Authorization","Bearer  " + accesTocken);
            var httpResponse = (HttpWebResponse)myReq.GetResponse();
            using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
            {
                var result = streamReader.ReadToEnd();
                txtResult.Text=result;
            }             
           


            
        }
        catch (WebException webex)
        {
            WebResponse errResp = webex.Response;
            using (Stream respStream = errResp.GetResponseStream())
            {
                StreamReader reader = new StreamReader(respStream);
                string text = reader.ReadToEnd();
                txtResult.Text = text;
            }
        }
        catch (Exception ex)
        {
            txtResult.Text = ex.Message;
        }

解决方法

我尝试运行您的代码,发现问题出在以下行,其中 Bearer 后有一个双空格,导致无法识别访问令牌。

myReq.Headers.Add("Authorization","Bearer  " + accesTocken);

解决方案:

myReq.Headers.Add("Authorization","Bearer " + accesTocken);

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...