你好,
我正在制作一个Android应用程序,它使用Retrofit2和Gson从几个API返回一个随机内容。
我已经为OMDB API找到了答案。现在我正在努力让它也适用于维基百科API。但只有我能收到的是空洞的答案。
下面的代码是OMDB API的工作解决方案,当我简单地交换基本URL,端点地址和复制新的POJO类时,它不起作用。从工作OMDB解决方案到Wiki非工作解决方案的这些变化也在代码中标记。
只有一个名为 id 的查询。
RestInterface类:
public interface RestInterface {
@GET("/?&plot=short&r=json") //for Wiki I used this address: "/w/api.php?action=query&format=json&prop=extracts&list=&meta=&explaintext=1"
Call<Model> getData(@Query("i") String id); //for Wiki I used this query @Query("pageids")
}
RestInterfaceService类:
public class RestInterfaceService {
private RestInterface restInterface;
public RestInterfaceService() {
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("http://www.omdbapi.com") //for Wiki I used this url "https://en.wikipedia.org"
.addConverterFactory(GsonConverterFactory.create())
.build();
restInterface = retrofit.create(RestInterface.class);
}
public void getData(String id, Callback callback) throws IOException {
restInterface.getData(id).enqueue(callback);
}}
MainActivity:
private void getData(String id) {
try {
restInterfaceService.getData(id, new Callback() {
@Override
public void onResponse(Call call, Response response) {
Model model = (Model) response.body();
//what to do, there for example popullating one TextView
final TextView textView = (TextView) findViewById(R.id.text);
textView.setText(model.getTitle()); // getTitle() method is located in both of POJO classes (OMDB and Wiki)
}
@Override
public void onFailure(Call call, Throwable t) {
// some action
}
});
} catch (IOException e) {
}
}
为了更清晰,我没有在这里复制整个POJO课程,但你可以在这些链接上看到它们:
对于Wiki解决方案,我创建了所有4个类,并且作为Model.class,我重命名了名为_21721040的类(该类所需的方法&#34; getTitle()所在的位置)
提前谢谢大家, Michalson
编辑:我尝试使用此API(restcountries.eu/)检查我的代码是否可以与其他API一起使用并且有效。