gpt4 book ai didi

java - 使用Retrofit 2.0从网络API中提取信息

转载 作者:行者123 更新时间:2023-12-01 16:55:46 25 4
gpt4 key购买 nike

我是 Java 编程的新手,在过去的几天里,我一直在尝试一个基本的英语到希腊语语音翻译应用程序,纯粹是为了帮助我学习一些(更高级的)概念。这是picture of the interface .

到目前为止,我已经获得了适用于两种语言的语音识别功能,并且我决定使用 MyMemory's API 作为用于翻译的 REST API。我正在使用 Retrofit 2.0.0-beta2 将 HTTP API 转换为 Java 接口(interface)。

目前,我只是尝试从 MyMemory 中提取单词/短语的翻译并将其放入应用程序内的文本字段中。

目前,我的项目中有三个类:

  1. TranslateAPI(接口(interface))
  2. 翻译数据
  3. 主要 Activity

翻译API

public interface TranslateAPI {
@GET("get")
void getTranslation(@Query("q") String request, Callback<TranslatedData> cb);
}

翻译数据

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 的教程都含糊不清且令人困惑,因为一半的指南是用 Retrofit 1.x 编写的,而另一半是用 Retrofit 1.x 编写的2.0 的一半。

最佳答案

在 Android Studio 的底部,您有 Android 监视器,您可以在其中找到包含错误的堆栈跟踪和更多信息,错误将在此处以红色突出显示。

Android Monitor

要使用 Retrofit 2.0 解析来自服务器的响应,您需要指定一个转换器。示例:如果您想首先使用 Gson 作为实体转换器,则必须将该依赖项添加到您的 build.gradle 文件中。

compile 'com.squareup.retrofit:converter-gson:2.0.0-beta2'

然后您必须将其指定到您的 Retrofit 适配器中:

 Retrofit marvelApiAdapter = new Retrofit.Builder()
.baseUrl(END_POINT)
.addConverterFactory(GsonConverterFactory.create(new Gson()))
.client(client)
.build();

如果不这样做,你就会崩溃。也许最好的建议是你现在应该使用 Retrofit 1.9,它很稳定,在撰写本文时第二个版本处于测试版本。另一方面in this link如果您正在遵循 1.9 教程,您会发现如何从 1.9 版本迁移到 2.0 版本的很好的指南,这可能是:)

关于java - 使用Retrofit 2.0从网络API中提取信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33113474/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com