我正在尝试将我的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);
答案 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}
,最终版本中不应包含任何大括号。