我是Java编程的新手,在过去的几天里,我一直在尝试使用基本的英语到希腊语的语音翻译应用程序,纯粹是为了帮助我学习一些(更高级的)概念。这是picture of the interface。使用Retrofit 2.0从网络中提取信息API
到目前为止,我已经获得了两种语言的语音识别功能,并且我决定使用MyMemory's API作为翻译的REST API。我正在使用Retrofit 2.0.0-beta2将HTTP API变成Java界面。
此刻,我只是试图从MyMemory中提取单词/短语的翻译,并将其放置在我的应用程序中的文本字段中。
目前,我已经在我的项目三类:
- TranslateAPI(接口)
- TranslatedData
- MainActivity
TranslateAPI
public interface TranslateAPI {
@GET("get")
void getTranslation(@Query("q") String request, Callback<TranslatedData> cb);
}
TranslatedData
public class TranslatedData {
String translatedText;
public String getTranslatedText(){
return translatedText;
}
}
MainActivity(相关代码)
public void translate(String toTranslate){
String request = "=" + toTranslate + "&langpair=" + langPair;
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("http://api.mymemory.translated.net/")
.build();
TranslateAPI service = retrofit.create(TranslateAPI.class);
service.getTranslation(request, new Callback<TranslatedData>() {
@Override
public void onResponse(Response<TranslatedData> response, Retrofit retrofit) {
System.out.println("Success");
//handle success
}
@Override
public void onFailure(Throwable t) {
System.out.println("Failure");
//handle failure
}
});
}
有几个问题在这里出现。首先,应用程序因translate()方法而崩溃,我无法理解为什么(我在android中的调试技巧仍然不存在)。任何人都可以请帮我弄清楚为什么?
其次,我如何解析服务器的响应?
我的代码是否有任何其他缺陷,可以防止应用程序工作/崩溃?
我很抱歉,如果我的问题很差或直截了当,我仍然是Android的新手,我发现大多数关于改装模糊和混乱的教程,因为一半的指南是在Retrofit 1.x中编写的,另一半是2.0。
插入你的手机我进入你的电脑。如果您使用的是Android Studio,则在将应用程序部署到您的设备时,它应该会自动打开到控制台(logcat界面)。如果你没有,你可以使用adb logcat手动捕获你的设备上的信息。这是一个开始的好地方。某些可能导致您的应用崩溃的原因(我不是100%确定的),是主线程中的网络使用或未声明您的应用需要网络访问权限。 –
你好泰勒,感谢早日回复。我要求清单文件上的网络访问权限。我非常抱歉,这个问题与translate()方法有关,因为如果我注释掉该方法,那么该应用程序运行良好,没有任何问题。我觉得我离解决方案只有一步之遥,但我不确定问题出在哪里。 –