java - Watson 对话服务 - 未经授权 : Access is denied due to invalid credentials

标签 java ibm-cloud watson-conversation

我尝试通过 Java 应用程序访问 Watson Conversation Service。因此,我在 Bluemix 上创建了服务并编写了一个小型应用程序。

package de.kkh.comp.WatsonDemo;

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.Map.Entry;

import com.ibm.watson.developer_cloud.conversation.v1.ConversationService;
import com.ibm.watson.developer_cloud.conversation.v1.model.MessageRequest;
import com.ibm.watson.developer_cloud.conversation.v1.model.MessageResponse;

public class App {

private static final String USERNAME = "{USERNAME}";
private static final String PASSWORD = "{PASSWORD}";
private static final String WORKSPACE_ID = "{WORKSPACE_ID}";

public static void main(String[] args) {
    ConversationService service = new ConversationService(ConversationService.VERSION_DATE_2017_02_03);
    service.setUsernameAndPassword(USERNAME, PASSWORD);

    MessageRequest newMessage = new MessageRequest.Builder().inputText("Hallo").context(new HashMap<String,Object>()).build();

    MessageResponse response = service.message(WORKSPACE_ID, newMessage).execute();

    System.out.println(response);
}
}

我希望得到 Watson 服务的简单答案。

如果我运行该应用程序,尽管我使用 Bluemix 提供的凭据,但我收到了未授权异常。

Aug 02, 2017 7:56:19 PM okhttp3.internal.platform.Platform log
INFORMATION: --> POST https://gateway.watsonplatform.net/conversation/api/v1/workspaces/{WORKSPACE_ID}/message?version=2017-02-03 http/1.1 (39-byte body)
Aug 02, 2017 7:56:20 PM okhttp3.internal.platform.Platform log
INFORMATION: <-- 401 Not Authorized https://gateway.watsonplatform.net/conversation/api/v1/workspaces/{WORKSPACE_ID}/message?version=2017-02-03 (214ms, unknown-length body)
Aug 02, 2017 7:56:20 PM com.ibm.watson.developer_cloud.service.WatsonService processServiceCall
SCHWERWIEGEND: POST https://gateway.watsonplatform.net/conversation/api/v1/workspaces/{WORKSPACE_ID}/message?version=2017-02-03, status: 401, error: Not Authorized
Exception in thread "main" com.ibm.watson.developer_cloud.service.exception.UnauthorizedException: Unauthorized: Access is denied due to invalid credentials
    at com.ibm.watson.developer_cloud.service.WatsonService.processServiceCall(WatsonService.java:492)
    at com.ibm.watson.developer_cloud.service.WatsonService$2.execute(WatsonService.java:254)
    at de.kkh.comp.WatsonDemo.App.main(App.java:26)

我不知道为什么会出现这个异常。有什么想法吗?

最佳答案

问题已解决。

我使用了德国地点。因此 API 端点需要是 https://gateway-fra.watsonplatform.net/conversation/api ,而不是默认 URL。

ConversationService 的构造函数使用默认 URL,即 https://gateway.watsonplatform.net/conversation/api 。要更改端点,需要调用: service.setEndPoint("https://gateway-fra.watsonplatform.net/conversation/api")

在我这样做之后,一切都很顺利。

关于java - Watson 对话服务 - 未经授权 : Access is denied due to invalid credentials,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45468299/

相关文章:

java - gridbaglayout 将组件定位到中心

java - IBM Cloud NLU 服务创建不允许我选择空间/组织

node.js - 如何将 IBM Cloud Functions 上的操作与数据库连接?

watson-conversation - 是否有一种编程方式可以导出 Watson Conversation 的意图?

android - Watson Dialog for Android 中的时区

Java关于反转字符串

java - 如何使用 Visual Studio Code 连接到远程 Java 调试器

java - 声明 List<Integer> 与 ArrayList<Integer> 之间有什么区别?

mysql - 如何在 db2 中声明和递增局部变量?

ios - 无法运行 bms-samples-cordova-hellopush - 未找到 bms_samples_cordova_push-Swift.h 文件