改造和维基百科API

时间:2016-03-09 10:51:11

标签: java android api retrofit wikipedia

你好,

我正在制作一个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一起使用并且有效。

0 个答案:

没有答案