2014-03-19 52 views
2

我正在研究我的許可論文,並且在嘗試運行我的程序時今天遇到了問題。我使用microsoft-translator-api將一些羅馬尼亞語翻譯成英語,直到現在我對翻譯沒有任何問題,一切正常,但兩天前開始我注意到我收到了這個異常:microsoft-translator-api-檢索翻譯錯誤:Java中的狀態碼400

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 com.utcn.translator.Translator.translate(Translator.java:16) 
at com.utcn.sentenceXmlParser.main.main(main.java:19) 

我的翻譯類看起來是這樣的:

包com.utcn.translator;

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

public abstract class Translator { 

    public static String translate(String line) { 
    Translate.setClientId(/*my client id*/); 
    Translate.setClientSecret(/*my client secret*/); 
    String translatedText = null; 
     try { 
      translatedText = Translate.execute(line, Language.ROMANIAN, 
        Language.ENGLISH); 
     } catch (Exception e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

    return translatedText; 
} 
} 

有沒有人知道我該如何解決這個問題?

最好的問候, Roxana的

回答

1

我找到了答案!

首先,我打電話給微軟的API。減少後我可以清楚地看到問題。我得到另一個異常becouse的「,這是在我的文字,似乎微軟翻譯API不能處理,並返回一個ClassCastException!

謝謝大家對你的答案!

0

最有可能的問題是與您的憑據。 (ClientIdClientSecret)。 您可以嘗試設置如下所示的憑據(摘自this thread)。

Translate.setClientId("client id you type in the web site"); 
Translate.setClientSecret("secret you type in the web site in Base 64 format"); 
+0

海蘭,謝謝作爲答案,但憑證沒有問題,我的客戶機密已經是Base 64格式,我得到了一些翻譯過的單詞,並且在幾次翻譯之後,我得到了這個例外 – Roxana

+1

由於microsoft-ttranslaor-api只是一個oAuth包裝器,發出http請求,你可以[設置代理](http://docs.oracle.com/javase/7/docs/technotes/guides/net/proxies.html)並使用攔截代理工具(如[Burp]( http://portswigger.net/burp/proxy.html))來調查對服務器的實際請求(通過攔截響應或設置斷點在翻譯器的API部分,你也可以看到確切的響應) –