Watson Developer Java-sdk STT

问题描述:

在示例应用程序中获取此错误。Watson Developer Java-sdk STT

java.net.ProtocolException:预期HTTP响应101但 '401 没有获得许可'

使用这个代码段transalate。

TranslateOptions translateOptions = new TranslateOptions.Builder() 
          .addText(params[0]) 
          .source(Language.ENGLISH) 
          .target(selectedTargetLanguage) 
          .build(); 

TranslationResult translationResult = translationService 
          .translate(translateOptions) 
          .execute(); 

一旦它执行的应用程序崩溃,我看到在日志此错误。

D/OkHttp: --> POST https://gateway.watsonplatform.net/language-translator/api/v2/translate/v2/translate http/1.1 (46-byte body) 
D/OkHttp: <-- 401 Not Authorized https://gateway.watsonplatform.net/language-translator/api/v2/translate/v2/translate (413ms, unknown-length body) 

POST https://gateway.watsonplatform.net/language-translator/api/v2/translate/v2/translate, status: 401, error: Not Authorized 

--------- beginning of crash 
E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #3 
Process: com.gobiggi.watsontutorial, PID: 10136 

java.lang.RuntimeException: An error occurred while executing doInBackground() 
at android.os.AsyncTask$3.done(AsyncTask.java:325) 
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:354) 
at java.util.concurrent.FutureTask.setException(FutureTask.java:223) 
at java.util.concurrent.FutureTask.run(FutureTask.java:242) 
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:243) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607) 
at java.lang.Thread.run(Thread.java:761) 

Caused by: 

com.ibm.watson.developer_cloud.service.exception.UnauthorizedException: Unauthorized: Access is denied due to invalid credentials. Tip: Did you set the Endpoint? 

at com.ibm.watson.developer_cloud.service.WatsonService.processServiceCall(WatsonService.java:410) 
at com.ibm.watson.developer_cloud.service.WatsonService$1.execute(WatsonService.java:174) 
at com.gobiggi.watsontutorial.MainActivity$TranslationTask.doInBackground(MainActivity.java:328) 
at com.gobiggi.watsontutorial.MainActivity$TranslationTask.doInBackground(MainActivity.java:321) 
at android.os.AsyncTask$2.call(AsyncTask.java:305) 
at java.util.concurrent.FutureTask.run(FutureTask.java:237) 
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:243)  
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)  
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)  
at java.lang.Thread.run(Thread.java:761) 
+0

那么......你有权使用该服务吗?据我所知,你需要为沃森付钱。你有没有账号?您是否从Java内部发送了用户名/密码? – Antares42

+0

是的,我做到了。当我在邮递员那里工作时,它正在工作。 –

+0

你有'/ api/v2/translate/v2/translate'。看起来像重复的网址构建。 –

我不知道太多关于如何沃森SDK的作品,但只要看一下错误,我看到:

com.ibm.watson.developer_cloud.service.exception.UnauthorizedException: 未经授权:由于证书无效,访问被拒绝。提示: 您设置了端点吗?

是说所提供的凭据是无效的。你应该从看这个开始。

+0

是的,我做到了。我尝试使用邮递员。有效。 –

+1

也许您的请求中缺少验证标头或某个标头。检查邮递员请求并将其与您要发送的邮件进行比较。你可以发布更多你正在使用的代码吗?您正在设置用户名和密码,如doc所示: LanguageTranslator service = new LanguageTranslator(); service.setUsernameAndPassword(“{username}”,“{password}”); –