2017-08-02 13 views
0

Javaアプリケーション経由でWatson Conversation Serviceにアクセスしようとしました。したがって私はBluemixのサービスを作成し、小さなアプリケーションを作成しました。Watson Conversation Service - 権限のない:資格情報が無効でアクセスが拒否されました。

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); 
} 
} 

私はワトソンサービスの簡単な答えが得られると期待しています。

私がアプリケーションを実行した場合、私はBluemixから与えられた資格情報を使用しますが、Not Authorized Exceptionを取得しました。

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) 

私はこの例外を得た理由を知りません。何か案は?

+0

スペルミスをチェックしましたか?大文字?適切なクラス、メソッド、フォーマットを使用しましたか?詳細を追加して、Google検索または2つを試してみてください。 – Rigidity

+0

私は資格情報をコピーして貼り付けました。クラス、メソッド、...はService APIで説明されているとおりです。私はグーグルではありますが、役に立つものは何も見つかりませんでした。それが私が求めている理由です。どのような詳細を知りたいですか? –

+0

APIが変更されている可能性がありますか? [現行バージョン](https://github.com/watson-developer-cloud/java-sdk/blob/develop/conversation/src/main/java/com/ibm/watson/developer_cloud/conversation/)を見るとv1/ConversationService.java#L95)、日付文字列はあなたが実行しているライブラリのバージョンより3ヶ月遅れています。 –

答えて

1

私は同じ問題を抱えていました。私の問題は、私が呼んでいたAPI URLが間違った場所にあることでした。たとえば、ドイツを使用している場合、正しいAPIエンドポイントは次のとおりです。https://gateway-fra.watsonplatform.net/conversation/api

+0

音が合法です。あなたが正しい。私はドイツの場所を使用します。 私は別のエンドポイントでそれを試みます。ありがとうございました。 –

+0

ねえ。私はあなたが言ったようにエンドポイントを変更しました。それはうまくいった。ご協力ありがとうございました。 :) –

+0

うれしい私は助けることができました! :) –

2

問題が解決しました。

ドイツ語の場所を使用しました。したがって、API-EndpointはDefault-URLの代わりにhttps://gateway-fra.watsonplatform.net/conversation/apiである必要があります。

ConversationServiceのコンストラクタは、Default-URL(https://gateway.watsonplatform.net/conversation/api)を使用します。エンドポイントを変更するには、電話する必要があります。 service.setEndPoint("https://gateway-fra.watsonplatform.net/conversation/api")

これを実行した後も、うまくいきました。

関連する問題