L'API Microsoft Translate pour Android donne UnknownHostException
-
21-12-2019 - |
Question
J'ai essayé le code suivant pour implémenter une application de traduction à l'aide de la bibliothèque API Microsoft Translator trouvée ici.J'ai une connexion Internet fonctionnelle et j'ai généré un identifiant client et un secret valides, mais chaque fois que j'essaie d'exécuter le code, j'obtiens le java.net.UnknownHostException
.
Mon code :
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
Translate.setClientId("Screened for the question"); //Change this
Translate.setClientSecret("I have screened the client secret to ask in SO"); //change
final TextView text = (TextView) findViewById(R.id.textView1);
Button Trans1 = (Button)findViewById(R.id.trans);
Trans1.setOnClickListener(new View.OnClickListener(){
public void onClick(View view) {
String word = "Hello";
try {
translatedText = Translate.execute(word, Language.ENGLISH, Language.GERMAN);
// text.setText(translatedText);
} catch (Exception e) {
e.printStackTrace();
}
}
});
Ma trace de pile :
04-11 14:19:41.711: W/System.err(3084): java.lang.Exception: [microsoft-translator-api] Error retrieving translation : Unable to resolve host "datamarket.accesscontrol.windows.net": No address associated with hostname
04-11 14:19:41.711: W/System.err(3084): at com.memetix.mst.MicrosoftTranslatorAPI.retrieveString(MicrosoftTranslatorAPI.java:202)
04-11 14:19:41.711: W/System.err(3084): at com.memetix.mst.translate.Translate.execute(Translate.java:61)
04-11 14:19:41.711: W/System.err(3084): at com.example.tanslator.TransActivity$1.onClick(TransActivity.java:45)
04-11 14:19:41.711: W/System.err(3084): at android.view.View.performClick(View.java:3571)
04-11 14:19:41.711: W/System.err(3084): at android.view.View$PerformClick.run(View.java:14247)
04-11 14:19:41.711: W/System.err(3084): at android.os.Handler.handleCallback(Handler.java:605)
04-11 14:19:41.711: W/System.err(3084): at android.os.Handler.dispatchMessage(Handler.java:92)
04-11 14:19:41.711: W/System.err(3084): at android.os.Looper.loop(Looper.java:137)
04-11 14:19:41.711: W/System.err(3084): at android.app.ActivityThread.main(ActivityThread.java:4517)
04-11 14:19:41.711: W/System.err(3084): at java.lang.reflect.Method.invokeNative(Native Method)
04-11 14:19:41.711: W/System.err(3084): at java.lang.reflect.Method.invoke(Method.java:511)
04-11 14:19:41.711: W/System.err(3084): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:993)
04-11 14:19:41.711: W/System.err(3084): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:760)
04-11 14:19:41.711: W/System.err(3084): at dalvik.system.NativeStart.main(Native Method)
04-11 14:19:41.711: W/System.err(3084): Caused by: java.net.UnknownHostException: Unable to resolve host "datamarket.accesscontrol.windows.net": No address associated with hostname
04-11 14:19:41.711: W/System.err(3084): at java.net.InetAddress.lookupHostByName(InetAddress.java:400)
04-11 14:19:41.711: W/System.err(3084): at java.net.InetAddress.getAllByNameImpl(InetAddress.java:242)
04-11 14:19:41.711: W/System.err(3084): at java.net.InetAddress.getAllByName(InetAddress.java:220)
04-11 14:19:41.711: W/System.err(3084): at libcore.net.http.HttpConnection.<init>(HttpConnection.java:71)
04-11 14:19:41.711: W/System.err(3084): at libcore.net.http.HttpConnection.<init>(HttpConnection.java:50)
04-11 14:19:41.711: W/System.err(3084): at libcore.net.http.HttpConnection$Address.connect(HttpConnection.java:351)
04-11 14:19:41.711: W/System.err(3084): at libcore.net.http.HttpConnectionPool.get(HttpConnectionPool.java:86)
04-11 14:19:41.721: W/System.err(3084): at libcore.net.http.HttpConnection.connect(HttpConnection.java:128)
04-11 14:19:41.721: W/System.err(3084): at libcore.net.http.HttpEngine.openSocketConnection(HttpEngine.java:308)
04-11 14:19:41.721: W/System.err(3084): at libcore.net.http.HttpsURLConnectionImpl$HttpsEngine.makeSslConnection(HttpsURLConnectionImpl.java:460)
04-11 14:19:41.721: W/System.err(3084): at libcore.net.http.HttpsURLConnectionImpl$HttpsEngine.connect(HttpsURLConnectionImpl.java:441)
04-11 14:19:41.721: W/System.err(3084): at libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:282)
04-11 14:19:41.721: W/System.err(3084): at libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:232)
04-11 14:19:41.721: W/System.err(3084): at libcore.net.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:80)
04-11 14:19:41.721: W/System.err(3084): at libcore.net.http.HttpURLConnectionImpl.getOutputStream(HttpURLConnectionImpl.java:188)
04-11 14:19:41.721: W/System.err(3084): at libcore.net.http.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:280)
04-11 14:19:41.721: W/System.err(3084): at com.memetix.mst.MicrosoftTranslatorAPI.getToken(MicrosoftTranslatorAPI.java:133)
04-11 14:19:41.721: W/System.err(3084): at com.memetix.mst.MicrosoftTranslatorAPI.retrieveResponse(MicrosoftTranslatorAPI.java:160)
04-11 14:19:41.721: W/System.err(3084): at com.memetix.mst.MicrosoftTranslatorAPI.retrieveString(MicrosoftTranslatorAPI.java:199)
04-11 14:19:41.721: W/System.err(3084): ... 13 more
La solution
J'ai aussi eu ce même problème en utilisant cette API, cela a fonctionné après avoir changé la ligne
translatedText = Translate.execute(word, Language.ENGLISH, Language.GERMAN);
à
translatedText = Translate.execute(word, Language.GERMAN);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow