Исключение переводчика Bing при интеграции с Java-приложением

Я пытаюсь интегрировать переводчик Bing в моем Java-приложении. Я зарегистрировался в Microsoft Azure Cognitive Service и на рынке Microsoft. при выполнении кода ниже

import com.memetix.mst.language.Language;
import com.memetix.mst.translate.Translate;

public class Main {
    public static void main(String[] args) {
        try{
            Translate.setClientId(/* my Client Id */);
            Translate.setClientSecret(/* my Client Secret */);

            String translatedText = Translate.execute("Bonjour le monde", Language.FRENCH, Language.ENGLISH);

            System.out.println(translatedText);
        }
        catch(Exception e) {
            System.err.println("Exception: " + e.getMessage());
        }
    }
} 

Я получаю ниже исключения:

Page NoException in thread "main" java.lang.Exception: [microsoft-translator-api] Error retrieving translation : Server returned HTTP response code: 400 for URL: https://datamarket.accesscontrol.windows.net/v2/OAuth2-13
    at com.memetix.mst.MicrosoftTranslatorAPI.retrieveString(MicrosoftTranslatorAPI.java:202)
    at com.memetix.mst.translate.Translate.execute(Translate.java:61)
    at test.SimpleExcelTranalator.main(SimpleExcelTranalator.java:44)
Caused by: java.io.IOException: Server returned HTTP response code: 400 for URL: https://datamarket.accesscontrol.windows.net/v2/OAuth2-13
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at sun.net.www.protocol.http.HttpURLConnection$10.run(Unknown Source)
    at sun.net.www.protocol.http.HttpURLConnection$10.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.net.www.protocol.http.HttpURLConnection.getChainedException(Unknown Source)
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(Unknown Source)
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(Unknown Source)
    at com.memetix.mst.MicrosoftTranslatorAPI.getToken(MicrosoftTranslatorAPI.java:139)
    at com.memetix.mst.MicrosoftTranslatorAPI.retrieveResponse(MicrosoftTranslatorAPI.java:160)
    at com.memetix.mst.MicrosoftTranslatorAPI.retrieveString(MicrosoftTranslatorAPI.java:199)
    ... 2 more
Caused by: java.io.IOException: Server returned HTTP response code: 400 for URL: https://datamarket.accesscontrol.windows.net/v2/OAuth2-13
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(Unknown Source)
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
    at java.net.HttpURLConnection.getResponseCode(Unknown Source)
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.getResponseCode(Unknown Source)
    at com.memetix.mst.MicrosoftTranslatorAPI.getToken(MicrosoftTranslatorAPI.java:138)
    ... 4 more

2 ответа

URL-адрес datamarket - это то, откуда вы получаете свой идентификатор клиента и секрет. Вы отправляете запрос на перевод? Должно быть что-то вроде http://api.microsofttranslator.com/v2/Http.svc/Translate?

Также датамаркет устарел. Вам нужно переключиться на Azure Cognitive Services http://docs.microsofttranslator.com/text-translate.html

Согласно вашему указанному пакету com.memetix.mst.language.* в вашем коде я искал и нашел его исходный код на GitHub, репозиторий на Maven и старый репозиторий на GoogleCode. Я просмотрел его исходный код и обнаружил, что он содержит текстовый API MS Translator со старого веб-сайта Azure. Библиотека устарела со старым API REST, на старом веб-сайте показано, что " API-интерфейс MICROSOFT TRANSLATOR теперь доступен на портале AZURE " и " ВАЖНО: требуется учетная запись Azure. Ознакомьтесь с шагами, чтобы начать работу на портале здесь." Поэтому сначала вам нужно иметь подписку Azure для создания службы Translator Text API на портале Azure, а затем написать код для вызова нового REST API. Вы можете обратиться к моему ответу для двух других потоков SO, как показано ниже, чтобы узнать, как использовать новый REST API и вызвать его через мой пример кода.

  1. Мой ответ для MS Translator возвращает пустой ответ при использовании с токеном Azure, показывающим использование нового API REST.
  2. Мой ответ для Microsoft Translator API Java: как получить новый идентификатор клиента с помощью Azure, который включает в себя мой пример кода, показывает, как вызывать новый REST API в Java.

Надеюсь, поможет.

Другие вопросы по тегам