本示例演示从服务器获取Json数据展示到客户端
接口地址:http://www.tngou.net/api/news/classify?id=1
该接口返回的Json为:
1、定义接口
/**
* 测试接口只需要一个id参数
*/
public interface INewsService
{
@GET("/api/news/classify")
Call<TnGou> getNewsList(@Query("id") int id);
}
2、根据接口的json数据,创建实体类
/**
* 新闻Json实体类
*/
public class TnGou
{
//此注解是必须
@SerializedName("status")
public String status;
@SerializedName("tngou")
public ArrayList<Newsclass> list;
}
/**
* 新闻内容
*/
public class Newsclass
{
@SerializedName("name")
public String name;
@SerializedName("title")
public String title;
@SerializedName("keywords")
public String keywords;
@SerializedName("description")
public String description;
@SerializedName("newsclass")
public int newsclass;//二级分类
@SerializedName("newclass")
public int newclass;//一级分类
@SerializedName("seq")
public int seq;//排序 从0。。。。10开始
}
3、使用Retrofit请求接口,填充数据
Retrofit retrofit = new Retrofit
.Builder()
.baseUrl("http://www.tngou.net")
.addConverterFactory(GsonConverterFactory.create())
.build();
INewsService newsService = retrofit.create(INewsService.class);
Call<TnGou> newsList = newsService.getNewsList(1);
newsList.enqueue(new Callback<TnGou>()
{
@Override
public void onResponse(Call<TnGou> call, Response<TnGou> response)
{
//获取到数据,打印
TnGou body = response.body();
ArrayList<Newsclass> list = body.list;
for (int i = 0; i < list.size(); i++)
{
Newsclass newsclass = list.get(i);
System.out.println(newsclass.title);
}
}
@Override
public void onFailure(Call<TnGou> call, Throwable t)
{
}
});
请注意:以上onResponse方法是在UI线程中执行的,和OkHttp不同