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使用随记的更多相关文章

  1. 使用过AsyncTask、EventBus、Volley以及Retrofit,必须好好了解handler运行机制

    我们都知道在UI线程中不能进行耗时操作,例如数据读写.网络请求.Android 4.0开始,在主线程中进行网络请求甚至会抛出Android.os.NetworkOnMainThreadExceptio ...

  2. spring-cloud-square源码速读(retrofit + okhttp篇)

    欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos spring-cloud-square系列文章 五分钟 ...

  3. Spark踩坑记——Spark Streaming+Kafka

    [TOC] 前言 在WeTest舆情项目中,需要对每天千万级的游戏评论信息进行词频统计,在生产者一端,我们将数据按照每天的拉取时间存入了Kafka当中,而在消费者一端,我们利用了spark strea ...

  4. Spark踩坑记——数据库(Hbase+Mysql)

    [TOC] 前言 在使用Spark Streaming的过程中对于计算产生结果的进行持久化时,我们往往需要操作数据库,去统计或者改变一些值.最近一个实时消费者处理任务,在使用spark streami ...

  5. 【知识必备】RxJava+Retrofit二次封装最佳结合体验,打造懒人封装框架~

    一.写在前面 相信各位看官对retrofit和rxjava已经耳熟能详了,最近一直在学习retrofit+rxjava的各种封装姿势,也结合自己的理解,一步一步的做起来. 骚年,如果你还没有掌握ret ...

  6. Android Retrofit 2.0 使用-补充篇

    推荐阅读,猛戳: 1.Android MVP 实例 2.Android Retrofit 2.0使用 3.RxJava 4.RxBus 5.Android MVP+Retrofit+RxJava实践小 ...

  7. Android MVP+Retrofit+RxJava实践小结

    关于MVP.Retrofit.RxJava,之前已经分别做了分享,如果您还没有阅读过,可以猛戳: 1.Android MVP 实例 2.Android Retrofit 2.0使用 3.RxJava ...

  8. 这些年一直记不住的 Java I/O

    参考资料 该文中的内容来源于 Oracle 的官方文档.Oracle 在 Java 方面的文档是非常完善的.对 Java 8 感兴趣的朋友,可以从这个总入口 Java SE 8 Documentati ...

  9. 快速Android开发系列网络篇之Retrofit

    Retrofit是一个不错的网络请求库,用官方自己的介绍就是: A type-safe REST client for Android and Java 看官网的介绍用起来很省事,不过如果不了解它是怎 ...

随机推荐

  1. Rest webservice 和SOAP webservice

    SOAP: 简单对象访问协议(Simple Object Access Protocol,SOAP)是一种基于 XML 的协议,可以和现存的许多因特网协议和格式结合使用,包括超文本传输协议(HTTP) ...

  2. input file限制上传文件类型

    http://www.cnblogs.com/haocool/p/3431181.html http://www.haorooms.com/post/input_file_leixing http:/ ...

  3. SQL中distinct的用法

    SQL中distinct的用法   1.作用于单列 2.作用于多列 3.COUNT统计 4.distinct必须放在开头 5.其他 在表中,可能会包含重复值.这并不成问题,不过,有时您也许希望仅仅列出 ...

  4. JQuery------分页插件下载地址

    转载GitHub: https://github.com/pgkk/kkpager

  5. docker run elasticsearch

    docker run -d --name=esNode1 -p 9200:9200 -p 9300:9300 elasticsearch:2.3 -Des.network.publish_host=& ...

  6. @Column

    @Column标记表示所持久化属性所映射表中的字段,该注释的属性定义如下: @Target({METHOD, FIELD}) @Retention(RUNTIME) public @interface ...

  7. 二维码相关---java生成二维码名片,并且自动保存到手机通讯录中...

    http://blog.csdn.net/lidew521/article/details/24441825

  8. 数字与字母混合生成流水号规则--ASP实现

    最近遇到一个比较奇葩的事情,自己所负责的一个系统出现一个流水号用完的问题:正常情况下,流水号用完应该增加多位来解决这个问题.鉴于各种因素,最后决定:位数不变,增加字母进去,当数字用完后,会出现字母,而 ...

  9. Zabbix自定义监控8080端口的连接数

    Zabbix自定义监控8080端口的连接数 一 zabbix自定义监控实现思路 实际上我们要想使用zabbix来监控一些服务的原理很简单,步骤分别是:1.写一个脚本用于获取待监控服务的一些状态信息2. ...

  10. 转载:Centos7 从零编译Nginx+PHP+MySql 序言 一

    这次玩次狠得.除了编译器使用yum安装,其他全部手动编译.哼~ 看似就Nginx.PHP.MySql三个东东,但是它们太尼玛依赖别人了. 没办法,想用它们就得老老实实给它们提供想要的东西. 首先的一些 ...