0

我正在尝试将 bing 翻译器集成到我的 java 应用程序中。我已注册 Microsoft azure 认知服务和 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
4

2 回答 2

1

数据市场 url 是您从中获取客户 ID 和密码的地方。那是您发送翻译请求的地方吗?应该类似于 http://api.microsofttranslator.com/v2/Http.svc/Translate

数据市场也被弃用了。您必须切换到 Azure 认知服务 http://docs.microsofttranslator.com/text-translate.html

于 2017-04-01T01:16:40.620 回答
0

根据您在代码中引用的包,我在GitHub 上com.memetix.mst.language.*搜索并找到了它的源代码,在Maven上找到了存储库,在GoogleCode上找到了一个旧存储库。我查看了它的源代码,发现它包装了Azure 旧数据市场网站的 MS Translator Text API 。该库与旧的 REST API 已过时,旧网站显示“ Microsoft TRANSLATOR API 现已在 AZURE 门户网站上可用”和“重要提示:需要 Azure 帐户。在此处阅读在门户网站上开始使用的步骤。”因此,首先您需要订阅 Azure 以在 Azure 门户上创建文本翻译 API 服务,然后编写代码来调用新的 REST API。您可以参考我对以下其他两个 SO 线程的回答以了解如何使用新的 REST API 并通过我的示例代码调用它。

  1. 我对MS Translator 的回答在与 Azure 令牌一起使用时返回空响应,显示了新的 REST API 用法。
  2. 我对 Microsoft Translator API Java 的回答,How to get client new ID with Azure,其中包括我的示例代码,它展示了如何在 Java 中调用新的 REST API。

希望能帮助到你。

于 2017-04-03T07:22:52.237 回答