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. HTML <a> 标签的 target 属性

    HTML <a> 标签的 target 属性 HTML <a> 标签 定义和用法 <a> 标签的 target 属性规定在何处打开链接文档. 如果在一个 <a ...

  2. 练习用基础SQL语句

    http://www.cnblogs.com/zxlovenet/p/3728842.html 本文语句大部分SQL语句来自<数据库系统概论>(第四版)王珊&萨师煊 ,是我们上课用 ...

  3. UITextField的placeholder文字的位置,颜色等的自定义设置

    //控制placeHolder的位置,左右缩20 -(CGRect)placeholderRectForBounds:(CGRect)bounds { CGRect inset = CGRectMak ...

  4. 第七章 人工智能,7.6 DNN在搜索场景中的应用(作者:仁重)

    7.6 DNN在搜索场景中的应用 1. 背景 搜索排序的特征分大量的使用了LR,GBDT,SVM等模型及其变种.我们主要在特征工程,建模的场景,目标采样等方面做了很细致的工作.但这些模型的瓶颈也非常的 ...

  5. Java集合之ArrayList

    ArrayList ArrayList是最常见以及每个Java开发者最熟悉的集合类了,顾名思义,ArrayList就是一个以数组形式实现的集合,以一张表格来看一下ArrayList里面有哪些基本的元素 ...

  6. oracle临时表空间操作

    1.查看临时表空间 (dba_temp_files视图)(v_$tempfile视图)select tablespace_name,file_name,bytes/1024/1024 file_siz ...

  7. css3 同时加载两个动画

    最近在做H5,遇到这样的需求(如题) 先上一部分代码: .cur .p1d1d4{   width: 3rem;   margin: 2rem 5.3rem 0 0;   -webkit-animat ...

  8. 项目开发(Require + E.js)

    最近在做的几个项目,分别用了不同的框架跟方式,有个H5的项目,用了vue框架, 这个项目我还没有正式加入进去, 等手头的这个项目完成就可以去搞vue了, 现在手头的这个项目是一个招聘的项目, 用到了N ...

  9. REDHAT一总复习1更改系统文档文件

    十台linux系统需要更改文档.请在server上执行以下任务: .在server计算机上,以student用户在/home/student目录中创建空文件,并将文件取名system_changes- ...

  10. codility flags solution

    How to solve this HARD issue 1. Problem: A non-empty zero-indexed array A consisting of N integers i ...