Watson Natural Language Understanding Java 401-未经授权

时间:2017-10-29 12:37:28

标签: java watson

我正在尝试将我的Java应用程序连接到Watson NLU服务。首先,我尝试按照Bluemix中的教程进行操作。我在Bluemix上创建了一个服务并导入了watson Java SDK。使用本教程代码,我一直收到401 - 未经授权的回复。 (当然我更改了服务的用户名和密码。)

我猜有些东西不见了,但我无法弄清楚是什么。

NaturalLanguageUnderstanding service = new NaturalLanguageUnderstanding(
  NaturalLanguageUnderstanding.VERSION_DATE_2017_02_27,
  "{username}",
  "{password}"
);

String text = "IBM is an American multinational technology " +
  "company headquartered in Armonk, New York, " +
  "United States, with operations in over 170 countries.";

EntitiesOptions entitiesOptions = new EntitiesOptions.Builder()
  .emotion(true)
  .sentiment(true)
  .limit(2)
  .build();

KeywordsOptions keywordsOptions = new KeywordsOptions.Builder()
  .emotion(true)
  .sentiment(true)
  .limit(2)
  .build();

Features features = new Features.Builder()
  .entities(entitiesOptions)
  .keywords(keywordsOptions)
  .build();

AnalyzeOptions parameters = new AnalyzeOptions.Builder()
  .text(text)
  .features(features)
  .build();

AnalysisResults response = service
  .analyze(parameters)
  .execute();

System.out.println(response);

2 个答案:

答案 0 :(得分:1)

我在node.js中遇到了同样的问题,并通过将api网关的正确url添加到NaturalLanguageUnderstanding service = new NaturalLanguageUnderstanding()对象来解决它。 请记住,这取决于您所在的地区..

问候 利奥

答案 1 :(得分:0)

401 Unauthorized会建议您用于访问该服务的凭据存在问题。要对此进行排除,请首先使用同一页面中的cURL教程:

curl -X POST \
-H "Content-Type: application/json" \
-u "{username}":"{password}" \
-d @parameters.json "https://gateway.watsonplatform.net/natural-language-understanding/api/v1/analyze?version=2017-02-27"

如果使用相同的用户名和密码,您仍然收到401 Unauthorized错误,那么该用户名/密码组合可能存在问题。删除Bluemix中的磁贴并创建一个新磁贴以获取新的用户名/密码,然后尝试一下。

如果确实可行,那么用户/密码如何插入代码就会出现问题。确定您已替换{username}{password},最终版本中不应包含任何大括号。