2017-09-26 9 views
0

Obtenir cette erreur dans l'exemple d'application.Développeur Watson java-sdk STT

java.net.ProtocolException: réponse HTTP 101 attendu, mais était '401 pas autorisé'

En utilisant cet extrait de code à transalate. Une fois qu'il exécute les plantages de l'application et que je vois cette erreur dans les journaux,

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

Eh bien ... êtes-vous autorisé à utiliser le service? Autant que je sache, vous devez payer pour Watson. Avez-vous un compte? Avez-vous envoyé votre nom d'utilisateur/mot de passe depuis Java? – Antares42

+0

Oui, je l'ai fait. Ça marche quand je le fais chez un facteur. –

+0

Vous avez '/ api/v2/translate/v2/translate'. On dirait une duplication de la construction d'url. –

Répondre

0

je ne sais pas trop comment fonctionne sdk watson mais juste en regardant l'erreur que je vois:

com.ibm.watson.developer_cloud.service.exception.UnauthorizedException: Non autorisé: l'accès est refusé en raison d'informations d'identification non valides. Conseil: Est-ce que a défini le point de terminaison?

Dit que les informations d'identification présentées ne sont pas valides. Vous devriez commencer par regarder ça.

+0

Oui, je l'ai fait. J'ai essayé la même chose en utilisant le facteur. Ça a marché. –

+1

Il se peut qu'il existe un en-tête d'authentification ou un en-tête manquant dans votre requête. vérifiez la demande du facteur et comparez-la avec celle que vous envoyez. Pouvez-vous poster plus de code que vous utilisez? Vous définissez le nom d'utilisateur et le mot de passe comme doc le dit dans le formulaire: LanguageTranslator service = new LanguageTranslator(); service.setUsernameAndPassword ("{nom d'utilisateur}", "{mot de passe}"); –