与 Java 应用程序集成时出现必应翻译器异常



我正在尝试将必应翻译器集成到我的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

数据市场 URL 是获取客户端 ID 和密钥的位置。这是您要发送翻译请求的地方吗?应该是这样的 http://api.microsofttranslator.com/v2/Http.svc/Translate?

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

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

  1. 我对 MS 翻译器的回答在与 Azure 令牌一起使用时返回空响应,显示新的 REST API 用法。
  2. 我对Microsoft Translator API Java的回答,如何使用Azure获取客户端新ID,其中包括我的示例代码,它显示了如何在Java中调用新的REST API。

希望对您有所帮助。

最新更新