#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"}
今天就写这么多
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories