Вопрос:

IBM Watson Conversation Service Использование настроек прокси из Java API

proxy ibm-watson

317 просмотра

2 ответа

14 Репутация автора

Я разработал службу бесед с использованием IBM Watson и развернул ее. Я могу получить доступ к своему сервису с помощью проводника API IBM Watson. Я попытался подключить службу с помощью API Java, как описано в https://developer.ibm.com/recipes/tutorials/integration-of-ibm-watson-conversation-service-to-your-java-application/, над которым я работаю корпоративная сеть, поэтому использование прокси для доступа в интернет. Теперь я не могу получить доступ к сервису из моего Java API. Я получаю ниже ошибки.

Exception in thread "main" java.lang.RuntimeException: java.net.ConnectException: Failed to connect to gateway.watsonplatform.net/169.48.66.222:443
    at com.ibm.watson.developer_cloud.service.WatsonService$1.execute(WatsonService.java:182)
    at com.chat.CustomerChat.conversationAPI(CustomerChat.java:47)
    at com.chat.CustomerChat.main(CustomerChat.java:32)
Caused by: java.net.ConnectException: Failed to connect to gateway.watsonplatform.net/169.48.66.222:443
    at okhttp3.internal.io.RealConnection.connectSocket(RealConnection.java:187)
    at okhttp3.internal.io.RealConnection.buildConnection(RealConnection.java:170)
    at okhttp3.internal.io.RealConnection.connect(RealConnection.java:111)
    at okhttp3.internal.http.StreamAllocation.findConnection(StreamAllocation.java:187)
    at okhttp3.internal.http.StreamAllocation.findHealthyConnection(StreamAllocation.java:123)
    at okhttp3.internal.http.StreamAllocation.newStream(StreamAllocation.java:93)
    at okhttp3.internal.http.HttpEngine.connect(HttpEngine.java:296)
    at okhttp3.internal.http.HttpEngine.sendRequest(HttpEngine.java:248)
    at okhttp3.RealCall.getResponse(RealCall.java:243)
    at okhttp3.RealCall$ApplicationInterceptorChain.proceed(RealCall.java:201)
    at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:163)
    at okhttp3.RealCall.execute(RealCall.java:57)

How do we set proxy connection in IBM watson Connection service?

My code:(Modified the user credentials and workspace id here)

        ConversationService service = new ConversationService("2017-05-26");
        service.setUsernameAndPassword("dfgdfg-578a-46b6-55hgg-ghgg4343", "ssdsd455gfg");
        MessageRequest newMessage = new MessageRequest.Builder().inputText(input).context(context).build();
        String workspaceId = "fgfdgfgg-ce7a-422b-af23-gfgf56565";
        MessageResponse response = service.message(workspaceId, newMessage).execute();
Автор: saratbala Источник Размещён: 04.01.2018 11:29

Ответы (2)


0 плюса

61 Репутация автора

Не совсем уверенный в работе с Java, но когда у меня возникла похожая проблема с Node, мне пришлось настроить прокси-переменные, и это помогло. Я бы порекомендовал вам попробовать, настроив прокси-переменные в eclipse и JVM . И также я думаю, что этот файл Java должен быть полезным.

Автор: Varun Размещён: 05.01.2018 12:34

0 плюса

627 Репутация автора

Пройдя хотя бы документацию по API IBM, я нашел ниже метод установки прокси. Он должен работать.

HttpConfigOptions config = new HttpConfigOptions
                .Builder()
                .proxy(new Proxy(Proxy.Type.HTTP,
                                 new InetSocketAddress("<Proxy IP>", <Proxy Port>)))
                .build();
service.configureClient(config);

Я реализовал этот код с Java-SDK 6.14.0. В этой версии SDK IBM прекратила выпуск пакета ConversationService и устарела. Вместо этого был представлен пакет Assistant. Мой рабочий код, как показано ниже.

    Assistant service = null;
    Context context = null;

    if (watsonUser.equalsIgnoreCase(APIKEY_AS_USERNAME))
    {
        IamOptions iamOptions = new IamOptions.Builder().apiKey(watsonApikey).build();
        service = new Assistant(watsonVersion, iamOptions);
    }
    else
    {
        service = new Assistant(watsonVersion, watsonUser,watsonPassword);
    }

    service.setEndPoint(watsonUrl);
    if(watsonProxy != null)
    {
        HttpConfigOptions config = new HttpConfigOptions
                .Builder()
                .proxy(new Proxy(Proxy.Type.HTTP,
                                 new InetSocketAddress(watsonProxyIP, watsonProxyPort)))
                .build();
        service.configureClient(config);
    }


    String workspaceId = watsonWorkspace_id;

    InputData input = new InputData.Builder(inputStr).build();

    MessageOptions options = new MessageOptions.Builder(workspaceId)
    .context(context)
      .input(input)
      .build();

    MessageResponse response = service.message(options).execute();
    context = response.getContext();

Я проверил код с помощью реализации на основе пакета беседы. Это сработало. Я не мог проверить с кодом, приведенным в вопросе, поскольку пакет ConversationService больше не в текущем SDK.

Автор: skvp Размещён: 07.05.2019 07:00
Вопросы из категории :
32x32