"Access is denied due to invalid credentials" REST API 错误。怎么解决?

"Access is denied due to invalid credentials" REST API error. How to solve?

我遵循了文档 here: and here:尝试通过 Android Java 集成到 Personality Insights 服务。 然而,在应用程序运行后,并使用指南中提到的正确用户名和密码......(指南不清楚("Before you begin" 中的第二个要点)使用哪组凭据 - 它说得到"service credentials" 和创建的新服务的凭据 - 我尝试了两者,但都失败并出现以下相同的错误。)

错误:

12-11 01:49:56.201 29584-29632/? I/CredentialUtils: JNDI 字符串查找不可用。 12-11 01:49:56.269 29584-29632/? D/NetworkSecurityConfig:未指定网络安全配置,使用平台默认值 12-11 01:49:56.723 29584-29632/? D/OkHttp: --> POST https://gateway.watsonplatform.net/personality-insights/api/v3/profile?version=2017-10-13 http/1.1 (1297-byte body) 12-11 01:49:56.803 29584-29632/? D/OkHttp: <-- 401 Not Authorized https://gateway.watsonplatform.net/personality-insights/api/v3/profile?version=2017-10-13 (78ms, unknown-length body) 12-11 01:49:56.863 29584-29632/? E/WatsonService: POST https://gateway.watsonplatform.net/personality-insights/api/v3/profile?version=2017-10-13, 状态: 401, 错误: 未授权 12-11 01:49:56.865 29584-29632/? E/ERROR:未经授权:由于凭据无效,访问被拒绝

com.ibm.watson.developer_cloud.service.exception.UnauthorizedException:未经授权:由于在 com.ibm.watson.developer_cloud.service.WatsonService.processServiceCall(WatsonService.java:492) 在 com.ibm.watson.developer_cloud.service.WatsonService$2.execute(WatsonService.java:254) 在 com.upen.personalityapp.MainActivity$RetrieveFeedTask.doInBackground(MainActivity.java:105) 在 com.upen.personalityapp.MainActivity$RetrieveFeedTask.doInBackground(MainActivity.java:87) 在 android.os.AsyncTask$2.call(AsyncTask.java:306) 在 java.util.concurrent.FutureTask.run(FutureTask.java:237) 在 android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:244) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607) 在 java.lang.Thread.run( Thread.java:761) 12-11 01:49:56.866 29584-29584/?

这是我正在使用的代码;我正在尝试将 "text" 输入传递给服务。

        service = new PersonalityInsights("2017-10-13");
        service.setUsernameAndPassword("{myUsername}", "{myPassword}");
        Profile profile = service.getProfile(text).execute();
        System.out.println(profile);
        return profile.toString();

我正在使用 com.ibm.watson.developer_cloud:personality-insights:3.8.0 依赖项。

我尝试通过浏览器连接到错误 (https://gateway.watsonplatform.net/personality-insights/api/v3/profile?version=2017-10-13) 中的 URL。它提示输入 username/password 组合。我从我的 IBM Cloud Lite 服务输入了我的详细信息,但它抛出 HTTP 错误 405。这是它在浏览器上的工作方式吗?

为了将来的某个人;

而不是 service.setUsernameAndPassword(username, password);,我尝试了 service.setUsernameAndPassword("username", "password"); 并且成功了。