> 文档中心 > 开发英汉词典03——调用翻译API,并实现APP功能的实现

开发英汉词典03——调用翻译API,并实现APP功能的实现


系列文章目录

文章目录

  • 系列文章目录
  • 前言
  • 一、选用翻译API接口
  • 二、编写调用API的代码
    • 1.进行权限申请
    • 2.编写调用翻译API的代码
    • 3.异步调用
    • 4.解析API调用结果
    • 5.测试运行APP
  • 总结

前言

前面我们已经完成基本的界面布局和组件的定义以及点击事件的处理,接下来我们要调用翻译API使我们的英汉词典APP具有翻译功能。

一、选用翻译API接口

这里我们使用的是有道翻译的AP接口
在这里插入图片描述

二、编写调用API的代码

1.进行权限申请

在这里插入图片描述

2.编写调用翻译API的代码

private String doTranslate(String word){

    NetManager netManager = NetManager.getInstance(null);    if (!netManager.hasDefaultNet()) { return "";    }    NetHandle netHandle = netManager.getDefaultNet();    String resText = "";

// 可以获取网络状态的变化
NetStatusCallback callback = new NetStatusCallback() {
// 重写需要获取的网络状态变化的override函数
};
netManager.addDefaultNetStatusCallback(callback);

// 通过openConnection来获取URLConnection
HttpURLConnection connection = null;
try {
String urlString = “https://fanyi.youdao.com/translate?&doctype=json&type=AUTO&i=%s”; // 开发者根据实际情况自定义EXAMPLE_URL
URL url = new URL(urlString);

 URLConnection urlConnection = netHandle.openConnection(url,  java.net.Proxy.NO_PROXY); if (urlConnection instanceof HttpURLConnection) {     connection = (HttpURLConnection) urlConnection;     connection.setRequestMethod("GET");     connection.connect();     // 之后可进行url的其他操作     InputStream in = connection.getInputStream();     BufferedReader reader = new BufferedReader(new InputStreamReader(in));     StringBuilder response = new StringBuilder();     String line;     while ((line = reader.readLine()) != null){  response.append(line);     }     HiLog.info(LOG_LABEL,response.toString());     resText = response.toString(); }    } catch(IOException e) { e.printStackTrace();    } catch (Throwable throwable){ throwable.printStackTrace();    } finally { if (connection != null){     connection.disconnect(); }    }    return parseTranslationResult(resText);}

3.异步调用

@Override
public void onClick(Component component) {
String inputWord = textField1.getText();
HiLog.info(LOG_LABEL,inputWord);
TaskDispatcher taskDispatcher = getGlobalTaskDispatcher(TaskPriority.DEFAULT);
taskDispatcher.asyncDispatch(new Runnable() {
@Override
public void run() {
String result = doTranslate(inputWord);
InnerEvent evt = InnerEvent.get(1);
evt.object = result;
eventHandler.sendEvent(evt);
}
});
}
});

    eventRunner = EventRunner.getMainEventRunner();    eventHandler = new XEventHandler(eventRunner);}

4.解析API调用结果

private String parseTranslationResult(String transApiResponseText){
String result = “”;
JsonElement jsonElement = JsonParser.parseString(transApiResponseText);
JsonObject jsonObject = jsonElement.getAsJsonObject();
int errorCode = jsonObject.get(“errorCode”).getAsInt();
JsonArray translateResult = jsonObject.get(“translateResult”).getAsJsonArray();
JsonObject jsonObject1 = translateResult.get(0).getAsJsonArray().get(0).getAsJsonObject();
result = jsonObject1.get(“tgt”).getAsString();
return result;
}

5.测试运行APP

测试结果如下
在这里插入图片描述
在这里插入图片描述

总结

以上就是本人所完成的一个简陋的翻译APP,在编写过程中出现了很多问题,其中很多地方都是都是通过查阅资料和观看相关视频后完成的,这样让我清楚的认识到自己对harmonyos的了解还很浅薄,只是学习了一点皮毛,还需要更多的努力,最后由衷感谢我的鸿蒙开发指导老师——刘老师,是他带我走进鸿蒙开发这一领域。

英语听力