【问题标题】:How to Integrate website with Talentlms API如何将网站与 Talentlms API 集成
【发布时间】:2017-09-01 06:16:14
【问题描述】:

当我使用这个 jQuery 脚本通过他们的 API 从Talentlms 获取资源时

var settings = {
    "async": true,
    "crossDomain": true,
    "url": "https://aaaaa.bbb.com/api/v1/users",
    "method": "POST",
    "headers": {
        "authorization": "Basic 5555555555555144455",//this for Api key + pw using basic authentication
        "cache-control": "no-cache",
        
    }
}

$.ajax(settings).done(function (response) {
    console.log(response);
});

执行此操作后,我在 Web 浏览器控制台中收到以下错误消息。

加载资源失败:服务器响应状态为 401

(未经授权)userProfile.aspx:1 XMLHttpRequest 无法加载

https://aaaaa.bbb.com/api/v1/users。预检响应无效

HTTP 状态码 401

请给我一个解决方案来解决这个问题。

【问题讨论】:

    标签: jquery json ajax


    【解决方案1】:

    我在用 Java 编写代码时也遇到了同样的问题,我能够通过在 API 密钥后附加 : 并在 Base64 中对其进行编码,然后将其作为 HttpRequest 中的授权标头发送来解决它:

        String theUrl = "https://xxxx.talentlms.com/api/v1/users";
        String apiKey = apiKeyFromWebsiteAccount + ":"; 
        String apiKeyEncoded = java.util.Base64.getEncoder().encodeToString(apiKey.getBytes(StandardCharsets.UTF_8));
        try {
            org.apache.http.impl.client.DefaultHttpClient httpclient =
                    new org.apache.http.impl.client.DefaultHttpClient();
            HttpGet request = new HttpGet(theUrl);
            request.addHeader(HttpHeaders.AUTHORIZATION, "Basic " + apiKeyEncoded);
    
            HttpResponse response = httpclient.execute(request);
            System.out.println(EntityUtils.toString(response.getEntity()));
        } catch (Exception e) {
            System.out.println("Error" + e);
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-05
      • 1970-01-01
      • 1970-01-01
      • 2010-11-21
      相关资源
      最近更新 更多