您的位置:首页 > 移动开发 > Android开发

#Retrofit 入门--Part 1

2015-11-03 23:18 435 查看

Retrofit 入门–Part 1

因为一些原因可能会用到Retrofit,所以学了一下,现在把自己的一些学习经验分享给大家

Retrofit是一套RESTful架构的Android(Java)客户端实现,基于注解,提供JSON to POJO(Plain Ordinary Java Object,简单Java对象),POJO to JSON,网络请求(POST,GET,PUT,DELETE等)封装。

Retrofit 官网

这篇文章里用到了这样一个结构来存数据

public class Task {
private long id;
private String text;

public Task() {}
public Task(long id, String text) {
this.id = id;
this.text = text;
}
public String toString(){
return text+id;

}
}


在每个例子中,都会用到这样一个类

public class ServiceGenerator {
public static final String API_BASE_URL="http://192.168.191.1";
private static OkHttpClient httpClient=new OkHttpClient();
private static Retrofit.Builder builder=
new Retrofit.Builder()
.baseUrl(API_BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJavaCallAdapterFactory.create());

public static <S>S createService(Class<S> serviceClass){
Retrofit retrofit=builder.client(httpClient).build();
return retrofit.create(serviceClass);
}

}


Get请求

public interface Get {
@GET("/retrofit/test2.php")
Call<List<Res>>s(
@Query("par1") String par1,
@Query("par2") String par2
);

}


有了以上几个类,我们就可以发出Get请求了

Task t=new Task(1,"my task");
GET o=Get.createService(Get.class);
Call<List<Task>> call=o.createTask("1","2");
List<Task> l= null;
try {
l=call.execute().body();
for(Task t:l){
Log.d("AAA",t.toString());
}
} catch (IOException e) {
e.printStackTrace();
}


由于在这儿使用的是默认的Convert,在这里有这几点需要注意

服务器返回的应该是这样的

[{"id":"111","text":"task text"},{"id":"111","text":"task text"}], 如果放回的最外层是jsonobject将会报错


返回中的id 和 text 应当与Task 类中的id text相对,否则将会出错

Post请求

在这儿,我们是把post的参数放在request body里发送

在Get例子中,我们使用List来获取一组数据,你可能只想要一组数据,在这儿我们将会实现它

public interface Post {
@POST("/retrofit/test2.php")
Call<Task> s(
@Body Task task
);
}


之后执行它的过程与Get并无区别,与上面有区别的是,服务器返回的应当是json object而不是 array

{"id":"111","text":"task text"}


今天就写这么多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  retrofit android