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. js浏览器对象模型(BOM)

    浏览器对象模型(Browser Object Model,BOM):浏览器为js提供的对象集合. 1 windows对象 windows对象:表示浏览器的框架以及与其相关的内容,比如滚动条和导航栏图标 ...

  2. 浅谈:javascript的面向对象编程之具体实现

    下面的javascript代码都是需要使用jQuery插件来做的.希望大家可以搭建好工作环境 首先我们来做一个练习:在一个删除的超链接中添加一个提示信息,提示是否确认删除. 一般情况下我们都会这么做 ...

  3. 通过设置CSS属性让DIV水平居中

    通过设置CSS属性让DIV水平居中 ---------------------- <html> <head> <title></title> <m ...

  4. 解决nginx使用proxy_pass反向代理时,cookie丢失的问题

    1. 如果只是host.端口转换,则cookie不会丢失.例如:    location /project {        proxy_pass   http://127.0.0.1:8080/pr ...

  5. Find and delete duplicate files

    作用:查找指定目录(一个或多个)及子目录下的所有重复文件,分组列出,并可手动选择或自动随机删除多余重复文件,每组重复文件仅保留一份.(支持文件名有空格,例如:"file  name" ...

  6. 关于tkCommand的各种事件的解释

    superclass for callback/observer methods vtkCommand is an implementation of the observer/command des ...

  7. bootstrap Table 中给某一特定值设置table选中

    bootstrap Table 中给某一特定值设置table选中 需求: 如图所示:左边地图人员选定,右边表格相应选中. 功能代码: //表格和图标联动 function changeTableSel ...

  8. NOSDK--一键打包的实现(五)

    1.5 mac下的脚本环境配置及脚本的使用 脚本环境主要依赖sdk,ndk和ant,前两个可以在android官方网站下载(被墙了的话只能FQ了). android-sdk-macosx androi ...

  9. Uva 11732 strcmp() Anyone?

    strcmp() Anyone? Time Limit: 2000MS   Memory Limit: Unknown   64bit IO Format: %lld & %llu [Subm ...

  10. IE7 自动为文件路径添加域名

    对于图片等文件的路径,一般在同一个域名下的文件都会使用相对路径,但如果使用JS获取文件的路径浏览器获取到的路径都是相对路径,但IE7会自动为路径添加域名变成绝对路径... IE7下图片路径,在文件相对 ...