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 看官网的介绍用起来很省事,不过如果不了解它是怎 ...
随机推荐
- swift实现水仙花数
//: Playground - noun: a place where people can play import Cocoa for var a in 1...4{ var b = 4 - a ...
- Linux下oracle数据库启动和关闭操作
第一步:登陆 root登陆之后切换到oracle用户上,输入 su oracle 第二步:连接 在oracle用户下,输入 sqlplus /nolog 第三步:使用管理员权限 输入 connect ...
- 图解JVM执行引擎之方法调用
一.方法调用 方法调用不同于方法执行,方法调用阶段的唯一任务就是确定被调用方法的版本(即调用哪一个方法),暂时还不涉及方法内部的具体运行过程.Class文件的编译过程中不包括传统编译器中的连接步骤,一 ...
- Java/C++之 public、protected、private ; virtual & abstract
一.绪 Java/C++都是面向对象的第三代计算机高级编程语言,其本质雷同,而语法确有差异,稍不注意容易引起混淆.本文总结了一些这两门语言的差异之处,仅供参考. 二.C++ 对于C++这门语言,就其类 ...
- 阿里云提示:对输入参数id未进行正确类型转义,导致整型注入的发生
类似以下提示: XXX.php中,对输入参数id未进行正确类型转义,导致整型注入的发生 解决办法: 找到对应文件:$id = $_GET['id']; 增加以下标红过滤: $id = $_GET['i ...
- 【转】C# 将字符串或表达式直接转为可执行代码的办法
C# 将字符串或表达式直接转为可执行代码的办法 反射类 using System; using System.Data; using System.Configuration; using Syste ...
- chrome谷歌浏览器插件制作简易教程
1.在磁盘上创建一个目录,用来放应用的代码和资源 2.在这个目录中,创建一个文本文件,命名为manifest.json,其内容为: { "manifest_version": 2, ...
- NSIS检测.NET Framework并在线下载
Section -.NET Framework ;检测是否是需要的.NET Framework版本 Call GetNetFrameworkVersion Pop $R1 ;${If} $R1 < ...
- spark 官方文档(1)——提交应用程序
Spark版本:1.6.2 spark-submit提供了在所有集群平台提交应用的统一接口,你不需要因为平台的迁移改变配置.Spark支持三种集群:Standalone.Apache Mesos和Ha ...
- 耿丹CS16-2班第七次作业汇总
Deadline: 2016-11-27 11:59pm 作业内容 第七次作业总结 01.每次成绩发布,麻烦没交作业的同学(暂定得分为-5的),请及时补交: 02.想不出来可以,代码乱成一团不行,命名 ...