retrofit使用随记
1.请求接口
public interface RetrofitApi {
/*注册*/
/*登录*/
@FormUrlEncoded //post请求带这个
@POST("url")
Call<User> login(@Field("json") JSONObject jsonObject);
//因为我是使用的jsonobject所以使用@Filed,其他的参照网上的例子,google
//还有填写字段的方式,这是封装json
/*Web*/
@GET("url")
Call<ResponseBody> getWebData();
//String返回类型用ResponseBody
/*注解url*/
@GET
Call<ResponseBody> getInfo(@Url String url);
@Headers("Authorization:APPCODE "+AppUrl.ALI_API_APPCODE)
@GET(AppUrl.ZIPCODE_PATH)
Observable<ZipCodeBean> getZipCode(@Query("address") String address, @Query("areaid") String areaid);
@Headers("Authorization:APPCODE "+AppUrl.ALI_API_APPCODE)
@GET(AppUrl.ZIPCODE_GET+"?zipcode={zipcode}")
Observable<ZipCodeBean> getZipCodePath(@Path("zipcode") String zipcode);
//测试
@Headers("Authorization:APPCODE "+AppUrl.ALI_API_APPCODE)
@GET()
Observable get(@Url String url,@QueryMap Map<String,String> map);
}
2.使用:每个call只能执行一次,可以每次都重新获取,也可以通过克隆call.clone()获取一个新的执行;
String(get) 返回值
Call<ResponseBody> call = ...;//封装之类网上搜索
if (type == 1){
call = ApiFactory.getLiangCaiApi().getWebData();//获取相应的call
call.enqueue(new Callback<ResponseBody>() {
@Override
public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
ResponseBody bodys = response.body();//如果是下载东西(这里是图片)response.body().bytes
bodys.string;//获取数据,,,response.body().bytes()获取的是byte数组,(比如下载的图片)
} @Override
public void onFailure(Call<ResponseBody> call, Throwable t) {
showToast("失败");
}
});
}else {
call = ApiFactory.getLiangCaiApi().getWebData(getWebUrl());
call.enqueue(new Callback<ResponseBody>() {
@Override
public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) { } @Override
public void onFailure(Call<ResponseBody> call, Throwable t) {
showToast("失败");
}
});
}
post
Call<LoginBean> call;
call = call = ApiFactory.getRetrofitApi().login(getJson());
call.enqueue(new CallBack<LoginBean>() {
@Override
public void onResponse(LoginBean result) {
//result 实体类对象
} @Override
public void onFailure(String error) { }
});
/**
* post请求
* */
JSONObject jObject;
private JSONObject getJson() {
jObject = new JSONObject();
try {
jObject.put("name", "111");
jObject.put("password", "123456");
} catch (JSONException e) {
e.printStackTrace();
}
return jObject;
}
3.自定义CallBack
自定义一个自己的MyCallBack继承CallBack
可以通过多态的方式(实体类的基类)在自定义的CallBack里预先处理一些内容
单纯的retrofit,没有使用rxjava
retrofit使用随记的更多相关文章
- 使用过AsyncTask、EventBus、Volley以及Retrofit,必须好好了解handler运行机制
我们都知道在UI线程中不能进行耗时操作,例如数据读写.网络请求.Android 4.0开始,在主线程中进行网络请求甚至会抛出Android.os.NetworkOnMainThreadExceptio ...
- spring-cloud-square源码速读(retrofit + okhttp篇)
欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos spring-cloud-square系列文章 五分钟 ...
- Spark踩坑记——Spark Streaming+Kafka
[TOC] 前言 在WeTest舆情项目中,需要对每天千万级的游戏评论信息进行词频统计,在生产者一端,我们将数据按照每天的拉取时间存入了Kafka当中,而在消费者一端,我们利用了spark strea ...
- Spark踩坑记——数据库(Hbase+Mysql)
[TOC] 前言 在使用Spark Streaming的过程中对于计算产生结果的进行持久化时,我们往往需要操作数据库,去统计或者改变一些值.最近一个实时消费者处理任务,在使用spark streami ...
- 【知识必备】RxJava+Retrofit二次封装最佳结合体验,打造懒人封装框架~
一.写在前面 相信各位看官对retrofit和rxjava已经耳熟能详了,最近一直在学习retrofit+rxjava的各种封装姿势,也结合自己的理解,一步一步的做起来. 骚年,如果你还没有掌握ret ...
- Android Retrofit 2.0 使用-补充篇
推荐阅读,猛戳: 1.Android MVP 实例 2.Android Retrofit 2.0使用 3.RxJava 4.RxBus 5.Android MVP+Retrofit+RxJava实践小 ...
- Android MVP+Retrofit+RxJava实践小结
关于MVP.Retrofit.RxJava,之前已经分别做了分享,如果您还没有阅读过,可以猛戳: 1.Android MVP 实例 2.Android Retrofit 2.0使用 3.RxJava ...
- 这些年一直记不住的 Java I/O
参考资料 该文中的内容来源于 Oracle 的官方文档.Oracle 在 Java 方面的文档是非常完善的.对 Java 8 感兴趣的朋友,可以从这个总入口 Java SE 8 Documentati ...
- 快速Android开发系列网络篇之Retrofit
Retrofit是一个不错的网络请求库,用官方自己的介绍就是: A type-safe REST client for Android and Java 看官网的介绍用起来很省事,不过如果不了解它是怎 ...
随机推荐
- 移动端阻止body滚动
一些移动设备有缺省的touchmove行为,比如说经典的iOS overscroll效果,当滚动超出了内容的界限时就引发视图反弹 阻止滚动: css: body{ height:100%; overf ...
- TomCat的安装与配置方法
经过自己的研究,各种烦,所以要写个博客,帮助大家安装这个软件. 一.安装TomCat(因为大家都安装了jdk,所以就不写了) 1.下载TomCat 网址如下:http://tomcat.apache. ...
- mysql 控制台 快捷方式
程序--附件--命令提示符 cd C:\Program Files\MySQL\MySQL Server 5.5\bin 我安装的5.5的默认目录,或者也可以增加path路径,直接打开cmd就可以登陆 ...
- oracle 12c 加入系统服务
1修改oratab文件 vi /etc/oratab #把后台一行的N改为Y db01:/usr/oracle/app/product/11.2.0/dbhome_1:Y 2如果安装时.bash_pr ...
- svn强制加注释才能提交
进入库的hooks目录下 cp pre-commit.tmpl pre-commit 并对pre-commit加入运行权限 修改pre-commit内容如下 REPOS="$1" ...
- js 刷新页面window.location.reload();
Javascript刷新页面的几种方法:1 history.go(0)2 window.location.reload() window.location.reload(true) 3 ...
- highcharts去掉版权|去掉水印链接(右下角)_
credits: { enabled: false }
- 用C#创建Windows服务(Windows Services)
用C#创建Windows服务(Windows Services) 学习: 第一步:创建服务框架 创建一个新的 Windows 服务项目,可以从Visual C# 工程中选取 Windows 服务(W ...
- Autoit3 正则表达式 匹配汉字
关于Autoit3正则匹配汉字,在网上搜来搜去都是雷同的内容,[\u4e00-\u9fa5] 然而,Invalid all the time 直到认真钻研Help File,最终又看到了这个 http ...
- git用法之常用命令
1.git 安装好后,如何配置? a: 设置本地用户名.邮箱,很重要!之后的每次提交都会用到这两条信息,说明是谁提交了更新. $ git config --global user.name " ...